Tietokoneiden näyttöjä, joissa näkyy kuvaa automaatiolaboratorion laitteistosta. Monitoreiden takana näkyy sama laitteisto kuin kuvissa.

timohei.net / Opintojaksot / Soveltava ohjelmointi / Python-ohjelmointi /
Ehtolauseet, loogiset operaatiot

Pythonissa käytetään ehtolausekkeissa matematiikasta tuttuja loogisia ehtoja. Ne merkitään Pythonissa seuraavasti:

Yhtäsuuri kuina == b
Erisuuri kuina != b
Pienempi kuina < b
Pienempi tai
yhtäsuuri kuin
a <= b
Suurempi kuina > b
Suurempi tai
yhtäsuuri kuin
a >= b

if

if eli jos-ehtolause suorittaa jälkeensä tulevan komennon, mikäli ehtolauseke on tosi:

a = 123
b = 234
if b > a:
    print("b on suurempi kuin a")

Annetuilla arvoilla ehtolauseke b > a antaa tulokseksi True, joten seuraava rivi suoritetaan ja näytölle tulostuu b on suurempi kuin a.

Suoritettavia rivejä voi olla useampikin. Kaikki ehtolausetta välittömästi seuraavat sisennetyt rivit suoritetaan, jos ehto toteutuu.

Huomaa ehtolauseen lopussa oleva kaksoispiste - se on pakollinen!

elif

elif tarkoittaa "else if". Mikäli if-rivin ehto ei toteutunut, elif-rivillä voidaan testata seuraava ehto. elif-ehtorivejä voi olla useita peräkkäin.

a = 123
b = 123
if b > a:
    print("b on suurempi kuin a")
elif a == b:
    print("a ja b ovat yhtäsuuria")

else

else-lauseen jälkeinen osuus suoritetaan, jos if- tai mikään elif-lauseista ei toteutunut. Huomaa, että else-riville ei tule ehtolauseketta!

a = 200
b = 100
if b > a:
    print("b on suurempi kuin a")
elif a == b:
    print("a ja b ovat yhtäsuuria")
else:
    print("a on suurempi kuin b")

Tehtäviä


Tehtävä 1

Muokkaa aiemmin tehtyä minuuttimuunninta (Tehtävä 2) niin, että mikäli annettu minuuttimäärä on 1440 minuuttia tai enemmän (eli yhden vuorokauden tai enemmän), ohjelma tulostaa tuloksen muodossa
1442 minuuttia on 1 päivää, 0 tuntia ja 2 minuuttia.

Tehtävä 2

Muokkaa ohjelmaa niin, että mikäli mikä tahansa tulostettavista arvoista on nolla, sitä vastaava kohta jätetään kokonaan tulostamatta. Edellisen esimerkin tulostus näyttäisi siis tältä:
1442 minuuttia on 1 päivää ja 2 minuuttia.

Tehtävä 3

Muokkaa ohjelmaa niin, että yksittäisten päivien, tuntien ja minuuttien tapauksessa tulostetaan sanat päivä, tunti ja minuutti (ei siis 1 päivää, 1 tuntia tai 1 minuuttia).


Sisäkkäinen if

if-lauseita voi olla sisäkkäin. Huomaa, että jälkimmäinen if-lauseke kuuluu ensimmäisen sisään, joten sen pitää olla sisennettynä. Jälkimmäisen if-lausekkeen suoritettavat rivit pitää sisentää vielä lisää:

a = 100
if a > 10:
....print("a on suurempi kuin 10")
....if a > 20:
........print(" ja suurempi kuin 20.")
....else:
........print(", mutta ei suurempi kuin 20.")

Yhden rivin if

Mikäli ehdon toteutuessa tarvitsee suorittaa vain yksi komento, voi käyttää yhden rivin muotoa (short hand if):

a = 100
b = 10
if a > b: print("a on suurempi kuin b")

Yhden rivin if ... else

Myös if ... else-rakenne voidaan toteuttaa yhdellä rivillä. Huomaa oudohko rakenne, jossa if-ehdon toteutuessa suoritettava käsky on rivillä ensimmäisenä:

a = 100
b = 200
print("a on suurempi") if a > b else print("b on suurempi")

if ... else -rakenteita voi yhden rivin toteutuksessa olla useita peräkkäin. Nyt vaaditaan jo tarkkuutta, jotta jossittelurakenteen toiminta aukeaisi:

a = 300
b = 300
print("a on suurempi") if a > b else print("a on yhtä suuri kuin b") if a == b else print("b on suurempi")

pass

if-lausekkeessa täytyy olla osa, joka suoritetaan ehdon toteutuessa. Mikäli jostain syystä mitään ei kuitenkaan haluta suorittaa, voidaan suoritusosaan virheilmoituksen välttämiseksi sijoittaa pass-käsky, joka ei tee mitään. Tämä voi olla tarpeen esimerkiksi kun ohjelmaa halutaan testata keskeneräisenä.

a = 100
b = 200
if b > a:
    pass

Loogiset operaatiot

and

a = 200
b = 33
c = 500
if a > b and c > a:
  print("Molemmat ehdot ovat tosia")

or

a = 200
b = 33
c = 500
if a > b or a > c:
  print("Ainakin yksi ehdoista on tosi")
Päivitetty 3.10.2023

<<  Edellinen
(8) Merkkijonojen käsittely
Sivu 9/17Seuraava >>
(10) Toistorakenteet
© Timo Heikkinen | timo piste heikkinen at oamk piste fi