Ehtolauseet, loogiset operaatiot
461 531 626
Pythonissa käytetään ehtolausekkeissa matematiikasta tuttuja loogisia ehtoja. Ne merkitään Pythonissa seuraavasti:
Yhtäsuuri kuin | a == b |
Erisuuri kuin | a != b |
Pienempi kuin | a < b |
Pienempi tai yhtäsuuri kuin | a <= b |
Suurempi kuin | a > b |
Suurempi tai yhtäsuuri kuin | a >= b |
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 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-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")
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.
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.
Muokkaa ohjelmaa niin, että yksittäisten päivien, tuntien ja minuuttien tapauksessa tulostetaan sanat päivä, tunti ja minuutti (ei siis
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.")
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")
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 = 200print("a on suurempi") if a > b elseprint("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 = 300print("a on suurempi") if a > b elseprint("a on yhtä suuri kuin b") if a == b elseprint("b on suurempi")
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
a = 200 b = 33 c = 500 if a > b and c > a: print("Molemmat ehdot ovat tosia")
a = 200 b = 33 c = 500 if a > b or a > c: print("Ainakin yksi ehdoista on tosi")