Ehtojen yhdistäminen
Loogiset operaattorit
Ehtojen yhdistämisessä voidaan käyttää loogisia operaattoreita and
ja or
.
Operaattori and
vaatii, että useampi ehto pätee samaan aikaan,
ja operaattori or
vaatii, että yksi tai useampi ehdoista pätee.
Esimerkiksi ehto luku >= 5 and luku <= 8
vaatii,
että luku on samaan aikaan ainakin 5 ja enintään 8.
Toisin sanoen luvun tulee olla välillä 5..8.
luku = int(input("Anna luku: "))
if luku >= 5 and luku <= 8:
print("Luku on välillä 5..8")
Ehto luku < 5 or luku > 8
puolestaan vaatii,
että luku on alle 5 tai yli 8.
Toisin sanoen luku ei saa olla välillä 5..8.
luku = int(input("Anna luku: "))
if luku < 5 or luku > 8:
print("Luku ei ole välillä 5..8")
Seuraava taulukko näyttää operaattoreiden toiminnan eri tilanteissa:
a | b | a and b | a or b |
---|---|---|---|
False | False | False | False |
True | False | False | True |
False | True | False | True |
True | True | True | True |
Voimme käyttää ehdoissa myös operaattoria not
, joka muuttaa totuusarvon
käänteiseksi:
a | not a |
---|---|
True | False |
False | True |
Esimerkiksi voisimme toteuttaa äskeisen koodin myös näin:
luku = int(input("Anna luku: "))
if not (luku >= 5 and luku <= 8):
print("Luku ei ole välillä 5..8")
Lisää ehtoja
Seuraava ohjelma kysyy käyttäjältä neljä lukua ja selvittää sitten luvuista suurimman ehtojen avulla:
n1 = int(input("Anna luku 1: "))
n2 = int(input("Anna luku 2: "))
n3 = int(input("Anna luku 3: "))
n4 = int(input("Anna luku 4: "))
if n1 > n2 and n1 > n3 and n1 > n4:
suurin = n1
elif n2 > n3 and n2 > n4:
suurin = n2
elif n3 > n4:
suurin = n3
else:
suurin = n4
print(f" {suurin} on suurin luku.")
Anna luku 1: 2 Anna luku 2: 4 Anna luku 3: 1 Anna luku 4: 1 4 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.
Sisäkkäiset ehtolauseet
Ehtolauseita voidaan kirjoittaa toistensa sisään. Esimerkiksi seuraava ohjelma tunnistaa positiivisista luvuista parittomat ja parilliset:
luku = int(input("Anna luku: "))
if luku > 0:
if luku % 2 == 0:
print("Luku on parillinen")
else:
print("Luku on pariton")
else:
print("Luku on negatiivinen")
Esimerkkitulostus kolmella eri syötteellä:
Anna luku: 3 Luku on pariton
Anna luku: 18 Luku on parillinen
Anna luku: -4 Luku 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: "))
if luku > 0 and luku % 2 == 0:
print("Luku on parillinen")
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.
Log in to view the quiz