Selitä ehdollinen haarautuminen if-lausekkeiden avulla Pythonissa.
- if-lausekkeiden perusteet (if, elif, else)
- Määritä ehtoja vertailuoperaattoreilla jne.
- Määritä ehdot numeron, luettelon jne. mukaan.
- Määritä useita ehtoja tai negaatioita loogisilla operaattoreilla (ja, tai, ei).
- Ehdolliset lausekkeet uusilla riveillä ja useilla riveillä
On myös ternäärinen operaattori, joka kuvaa ehdollisen haaran yhdellä rivillä. Katso seuraava artikkeli.
if-lausekkeiden perusteet (if, elif, else)
if-lauseen perusmuoto on seuraava
if Conditional expression 1:
`Processing to be performed if Expression 1 is True.`
elif Conditional expression 2:
`Processing to be performed when expression 1 is false and expression 2 is true.`
elif Expression 3:
`Process when expression 1 and 2 are false and expression 3 is true.`
...
else:
`Processing when all conditionals are false.`
”Elif” vastaa ”else if” -merkkiä C:ssä ja muissa kielissä, ja ”elif”-merkkejä voi olla kuinka monta tahansa.
Jos ehdollisia lausekkeita on vain yksi tai käsittely silloin, kun false ei ole tarpeen, ”elif”- ja ”else”-lohkot voidaan jättää pois.
Määritä ehtoja vertailuoperaattoreilla jne.
Määritä ehto operaatiolla, joka palauttaa bool-tyypin (true, false), kuten vertailuoperaattorilla.
Python-vertailuoperaattorit ovat seuraavat
operaattori | tulos |
---|---|
x < y | true jos x on pienempi kuin y |
x <= y | true jos x on pienempi tai yhtä suuri kuin y |
x > y | true jos x on suurempi kuin y |
x >= y | true jos x on suurempi tai yhtä suuri kuin y |
x == y | true, jos x- ja y-arvot ovat samat |
x != y
x is y
x is not y
x in y
x not in y
Esimerkki. Yksinkertaisuuden vuoksi se on määritelty funktioksi def-lauseella.
def if_test(num):
if num > 100:
print('100 < num')
elif num > 50:
print('50 < num <= 100')
elif num > 0:
print('0 < num <= 50')
elif num == 0:
print('num == 0')
else:
print('num < 0')
if_test(1000)
# 100 < num
if_test(70)
# 50 < num <= 100
if_test(0)
# num == 0
if_test(-100)
# num < 0
Seuraava voidaan kirjoittaa Pythonille ominaisella tavalla. Katso lisätietoja seuraavasta artikkelista.a < x < b
def if_test2(num):
if 50 < num < 100:
print('50 < num < 100')
else:
print('num <= 50 or num >= 100')
if_test2(70)
# 50 < num < 100
if_test2(0)
# num <= 50 or num >= 100
==
!=
Yllä oleva on arvojen vertailu; jos haluat verrata objektien identiteettejä, käytä seuraavia ohjeita
is
is not
Kun esimerkiksi verrataan kokonaislukua ja liukulukua, ”==” palauttaa totuuden, jos arvot vastaavat toisiaan, mutta ”is” palauttaa väärän, koska ne ovat eri objekteja.
i = 10
print(type(i))
# <class 'int'>
f = 10.0
print(type(f))
# <class 'float'>
print(i == f)
# True
print(i is f)
# False
On myös mahdollista asettaa ehto, sisältääkö lista tai merkkijono tietyn elementin (merkin).
in
:sisällyttäänot in
:lukuun ottamatta
def if_test_in(s):
if 'a' in s:
print('a is in string')
else:
print('a is NOT in string')
if_test_in('apple')
# a is in string
if_test_in('melon')
# a is NOT in string
Määritä ehdot numeron, luettelon jne. mukaan.
if-lauseen ehdollinen lauseke voi olla luku, lista tai muu objekti, joka ei ole tyyppiä bool (true, false).
if 10:
print('True')
# True
if [0, 1, 2]:
print('True')
# True
Pythonin if-lauseen ehdollisessa lausekkeessa seuraavat kohteet katsotaan vääriksi.
- Vääriksi määritellyt vakiot:
None
,false
- Nolla numeerisessa muodossa:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Tyhjä sarja tai kokoelma:
''
,()
,[]
,{}
,set()
,range(0)
Truth Value Testing — Built-in Types — Python 3.10.4 Documentation
Nollaa, tyhjiä merkkijonoja, luetteloita jne. edustavia numeroita pidetään väärinä, kaikkia muita pidetään totena.
Se, miten objekti arvioidaan, voidaan tarkistaa komennolla bool().
print(bool(10))
# True
print(bool(0.0))
# False
print(bool([]))
# False
print(bool('False'))
# True
Tätä voidaan käyttää esimerkiksi prosessin kirjoittamiseen, kun lista on tyhjä.
def if_test_list(l):
if l:
print('list is NOT empty')
else:
print('list is empty')
if_test_list([0, 1, 2])
# list is NOT empty
if_test_list([])
# list is empty
Huomaa, että merkkijono 'False' on myös tosi, koska kuten yllä olevassa esimerkissä on esitetty, mikä tahansa merkkijono, joka ei ole tyhjä merkkijonossa, on tosi.”. Jos haluat muuntaa tietyn merkkijonon, kuten 'True' tai 'False', arvoksi 1,0, käytä distutils.util-moduulin funktiota strtobool().
Määritä useita ehtoja tai negaatioita loogisilla operaattoreilla (ja, tai, ei).
Loogisia operaattoreita (and, or, not) voidaan käyttää loogisen konjunktion, loogisen disjunktion ja useiden ehtojen negaation käsittelyyn.
operaattori | (Tulos (if-lauseen ehdollisessa lausekkeessa) |
---|---|
x and y | tosi, jos sekä x että y ovat tosi |
x or y | tosi, jos joko x tai y on tosi |
not x | väärä, jos x on tosi, tosi, jos x on väärä. |
def if_test_and_not(num):
if num >= 0 and not num % 2 == 0:
print('num is positive odd')
else:
print('num is NOT positive odd')
if_test_and_not(5)
# num is positive odd
if_test_and_not(10)
# num is NOT positive odd
if_test_and_not(-10)
# num is NOT positive odd
Itse asiassa ”x ja y” ja ”x tai y” eivät palauta True tai False, vaan joko x tai y. Niin kauan kuin niitä käytetään ehdollisissa lausekkeissa if-lausekkeissa, niistä ei tarvitse olla huolissaan, koska niiden tulokseksi saadaan joko True tai False. Katso lisätietoja seuraavasta artikkelista.
- RELATED:Pythonin loogiset operaattorit ”ja, tai, ei” (looginen konjunktio, looginen disjunktio, negaatio).
On mahdollista käyttää ja ja tai useammin kuin kerran.
def if_test_and_not_or(num):
if num >= 0 and not num % 2 == 0 or num == -10:
print('num is positive odd or -10')
else:
print('num is NOT positive odd or -10')
if_test_and_not_or(5)
# num is positive odd or -10
if_test_and_not_or(10)
# num is NOT positive odd or -10
if_test_and_not_or(-10)
# num is positive odd or -10
Ehdolliset lausekkeet uusilla riveillä ja useilla riveillä
Kun käytetään useita ehdollisia lausekkeita liittämällä ne toisiinsa ”and”- tai ”or”-merkillä ja jokaisesta rivistä tulee pitkä, on joskus tarpeen katkaista ehdollinen lauseke ja kirjoittaa se useammalle riville.
Rivinvaihto voidaan tehdä käyttämällä vinoviivaa tai sulkemalla koko rivi sulkuihin.
def if_test_and_backslash(num):
if num >= 0 \
and not num % 2 == 0:
print('num is positive odd')
else:
print('num is NOT positive odd')
if_test_and_backslash(5)
# num is positive odd
def if_test_and_brackets(num):
if (num >= 0
and not num % 2 == 0):
print('num is positive odd')
else:
print('num is NOT positive odd')
if_test_and_brackets(5)
# num is positive odd
Voit käyttää backslash-viivaa rivin katkaisemiseen niin monta kertaa kuin haluat. Samoin voit katkaista rivin kuinka monta kertaa tahansa sulkujen sisällä. Sisäänvetorajoitusta ei ole rajoitettu.
Huomaa, että tätä tekniikkaa voidaan käyttää missä tahansa Python-koodissa, ei vain if-lausekkeissa.