if-elif-else -ehtolauseet ja vertailuoperaattorit

if-ehtolauseen avulla ohjataan ohjelman suoritusta haluttuun suuntaan. if-ehtolauseen lyhyempi muoto on if-else:

if EHTO:
    jos EHTO toteutuu, suoritetaan tässä sisennetty koodi
else:
    jos EHTO ei toteudu, suoritetaan tässä sisennetty koodi

if-ehtolauseen pidempi muoto on if-elif-else:

if EHTO1:
    jos EHTO1 toteutuu, suoritetaan tässä sisennetty koodi
elif EHTO2:
    jos EHTO1 ei toteudu, mutta EHTO2 toteutuu, suoritetaan tässä sisennetty koodi
else:
    jos EHTO1 tai EHTO2 ei toteudu, suoritetaan tässä sisennetty koodi

Huomaa sisennykset: Pythonissa sisennykset ovat tärkeässä roolissa ja yllä olevat ehtolauseet eivät toimi, jos niitä ei ole sisennetty oikein.

Käydään ensin läpi ehtolauseissa käytettyjä vertailuoperaattoreita, jonka jälkeen siirrytään käytännön esimerkkeihin.

Vertailuoperaattorit

Ehtolauseissa käytetään hyvin usein vertailuoperaattoreita:

Operaattori      Vertailuoperaattorin merkitys      Esimerkkejä ehtolauseessa
== Yhtä suuri kuin if numero == 1000:
if nimi == "Tytti":
!= Erisuuri kuin if hinta != 10:
if vierailija != "Loiri":
> Suurempi kuin if massa > 55.5:
< Pienempi kuin if lampotla < 0.0:
>= Suurempi tai yhtä suuri kuin if paine >= 32:
<= Pienempi tai yhtä suuri kuin if tilavuus <= 24:

if-else

Tarkastellaan esimerkkiohjelmaa:

luku = int(input("Anna kokonaisluku:\n"))
if luku >= 0:
    print("Antamasi luku on suurempi tai yhtä suuri kuin nolla")
else:
    print("Antamasi luku on pienempi kuin nolla")

Esimerkkisuoritus:

Anna kokonaisluku:
> 5
Antamasi luku on suurempi tai yhtäsuuri kuin nolla

Toinen esimerkkisuoritus eri syötteellä:

Anna kokonaisluku:
> -222
Antamasi luku on pienempi kuin nolla

if-ehtolauseita voi olla useita sisäkkäin. Huomaa sisennysten käyttö tässä esimerkkiohjelmassa:

luku = int(input("Anna kokonaisluku:\n"))
if luku >= 0:
    print("Antamasi luku on suurempi tai yhtäsuuri kuin nolla")
    if luku > 1000:
        print("Se on jopa suurempi kuin 1000")
    else:
        print("Se on kuitenkin enintään 1000")
else:
    print("Antamasi luku on pienempi kuin nolla")

Esimerkkisuoritus:

Anna kokonaisluku:
> 999
Antamasi luku on suurempi tai yhtäsuuri kuin nolla
Se on kuitenkin enintään 1000

Ensimmäinen ehto "luku >= 0" siis toteutui, mutta ensimmäisen ehtolauseen sisällä oleva ehto "luku > 0" ei toteutunut.

if-elif-else

Ehtolauseeseen voi myös lisätä mielivaltaisen määrän lisäehtoja elif-käskyllä:

luku = int(input("Anna kokonaisluku: "))
if luku > 1000:
    print("Antamasi luku on suurempi kuin tuhat")
elif luku > 100:
    print("Antamasi luku on suurempi kuin sata")
elif luku > 10:
    print("Antamasi luku on suurempi kuin kymmenen")
elif luku >= 0:
    print("Antamasi luku on välillä 0..10")
else:
    print("Antamasi luku on pienempi kuin nolla")

else-osio ei ole pakollinen:

kuukausi = input("Mikä kuukausi nyt on?\n")
if kuukausi == "joulukuu":
    print("Joulu tulla jolkottaa")
elif kuukausi == "elokuu":
    print("Vielä on kesää jäljellä")

Lisätietoja: Liukulukujen yhtäsuuruuden vertailu

Huom! Liukulukujen yhtäsuuruuden vertailun kanssa pitää olla tarkkana! Yhtäsuuruuden vertailu on parasta tehdä math.isclose-funktiolla. Palaamme tähän asiaan 2. kierroksen oppimateriaalissa.


Tehtävä 1.6.1

Tehtävä 1.6.2