Ehtorakenne
Tähän mennessä kaikissa ohjelmissamme on suoritettu samat rivit samassa järjestyksessä. Usein 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? "))
if ika > 17:
print("Olet täysi-ikäinen!"
print("Tässä siis sinulle ikiomaksi GTA6.")
print("Seuraava asiakas, kiitos!")
Ohjelman suoritus näyttää tältä, kun ikä on suurempi kuin 17:
Kuinka vanha olet? 18 Olet täysi-ikäinen! Tässä siis sinulle ikiomaksi GTA6. Seuraava asiakas, kiitos!
Jos kuitenkaan ikä ei ole suurempi kuin 17, käy näin:
Kuinka vanha olet? 16 Seuraava 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.
Ehtorakenteessa avainsanaa if
seuraa jokin ehto, kuten kahden arvon vertailu. Tämän jälkeen tuleva koodi suoritetaan vain, jos ehto pitää paikkansa.
Huomaa, että ehtorakenteen ensimmäisen rivin lopussa on kaksoispiste. Seuraavassa koodissa kaksoispiste on unohtunut:
ika = 10
# kaksoispiste unohtui seuraavan rivin lopusta
if ika > 17
print("Olet täysi-ikäinen.")
Tämän seurauksena koodi antaa virheen:
File "ohjelma.py", line 3 if ika > 17 ^ SyntaxError: invalid syntax
Vertailuoperaattorit
Tyypillinen ehto on kahden arvon vertailu. Pythonin vertailuoperaattorit ovat:
Operaattori | Merkitys | Esimerkki |
---|---|---|
== | Yhtä suuri | a == b |
!= | Eri suuri | a != b |
> | Suurempi | a > b |
>= | Suurempi tai yhtä suuri | a >= b |
< | Pienempi | a < b |
<= | Pienempi tai yhtä suuri | a <= b |
Tarkastellaan esimerkkinä ohjelmaa, joka tulostaa tiedon siitä, onko käyttäjän syöttämä luku negatiivinen, positiivinen vai nolla:
luku = int(input("Anna luku: "))
if luku < 0:
print("Luku on negatiivinen.")
if luku > 0:
print("Luku on positiivinen.")
if luku == 0:
print("Luku on nolla.")
Ohjelma suoritettuna kolme kertaa eri syötteillä:
Anna luku: 15 Luku on positiivinen.
Anna luku: -18 Luku on negatiivinen.
Anna luku: 0 Luku on nolla.
Sisentäminen
Python tunnistaa ehtorakenteen sisällä olevan koodin siitä, että jokainen rivi on sisennetty samalla tavalla. Tämä tarkoittaa, että ehtorakenteen sisällä olevan koodin alussa on tyhjää tilaa. Jokaisella rivillä tulee olla yhtä paljon tyhjää tilaa.
Esimerkiksi:
salasana = input("Anna salasana: ")
if salasana == "kissa":
print("Tiesit salasanan!")
print("Olet siis joko oikea käyttäjä...")
print("...tai melkoinen hakkerivelho.")
print("Ohjelman suoritus päättyi. Kiitos ja hei!")
Tyhjä tila saadaan aikaan tabulaattorilla, jonka saat Tab-näppäimestä.
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ä.
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
ehto = a < 5
print(ehto)
if ehto:
print("a on pienempi kuin 5")
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")
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:
Log in to view the quiz
Vastaa lopuksi kyselyyn tämän viikon materiaaleista. Saat kyselyyn vastaamisesta yhden pisteen:
Log in to view the quiz