Razložite pogojno razvejitev z ukazi if v Pythonu.
- Osnove stavkov if (if, elif, else)
- Določite pogoje s primerjalnimi operatorji itd.
- Pogoje določite po številu, seznamu itd.
- določanje več pogojev ali negacij z logičnimi operatorji (in, ali, ne)
- Pogojni izrazi za nove vrstice in več vrstic
Na voljo je tudi trojni operator, ki v eni vrstici opiše pogojno vejo. Glej naslednji članek.
Osnove stavkov if (if, elif, else)
Osnovna oblika izjave if je naslednja
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” ustreza “else if” v jeziku C in drugih jezikih, “elif” pa je lahko poljubno število.
Če obstaja samo en pogojni izraz ali če obdelava pri false ni potrebna, lahko bloka “elif” in “else” izpustite.
Določite pogoje s primerjalnimi operatorji itd.
Pogoj določite z operacijo, ki vrača tip bool (true, false), na primer s primerjalnim operatorjem.
Primerjalni operatorji Pythona so naslednji
operater | rezultat |
---|---|
x < y | true, če je x manjši od y |
x <= y | true, če je x manjši ali enak y |
x > y | true, če je x večji od y |
x >= y | true, če je x večji ali enak y |
x == y | true, če sta vrednosti x in y enaki |
x != y
x is y
x is not y
x in y
x not in y
Primer. Zaradi priročnosti je definiran kot funkcija z izjavo def.
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
Naslednje lahko zapišemo na način, ki je značilen samo za Python. Za podrobnosti glejte naslednji članek.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
==
!=
Zgoraj je prikazana primerjava vrednosti; če želite primerjati identitete predmetov, uporabite naslednje
is
is not
Na primer pri primerjavi celega števila in števila s plavajočo vejico funkcija “==” vrne true, če sta vrednosti enakovredni, funkcija “is” pa vrne false, ker gre za različna predmeta.
i = 10
print(type(i))
# <class 'int'>
f = 10.0
print(type(f))
# <class 'float'>
print(i == f)
# True
print(i is f)
# False
Prav tako je mogoče določiti pogoj, ali seznam ali niz vsebuje določen element (znak).
in
:vključitinot in
:brez
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
Pogoje določite po številu, seznamu itd.
Pogojni izraz izjave if je lahko število, seznam ali drug objekt, ki ni tipa bool (true, false).
if 10:
print('True')
# True
if [0, 1, 2]:
print('True')
# True
V pogojnem izrazu izjave if v programu Python se naslednji predmeti štejejo za napačne.
- Konstante, ki so definirane kot false:
None
,false
- Nula v številski vrsti:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Prazno zaporedje ali zbirka:
''
,()
,[]
,{}
,set()
,range(0)
Truth Value Testing — Built-in Types — Python 3.10.4 Documentation
Številke, ki predstavljajo ničlo, prazne nize, sezname itd., se štejejo za napačne, vse druge pa za resnične.
Kako je predmet ocenjen, lahko preverite s funkcijo bool().
print(bool(10))
# True
print(bool(0.0))
# False
print(bool([]))
# False
print(bool('False'))
# True
To lahko na primer uporabite za preprosto pisanje procesa, ko je seznam prazen.
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
Upoštevajte, da bo tudi niz 'False' resničen, saj bo, kot je prikazano v zgornjem primeru, vsak niz, ki v nizu ni prazen, resničen. Če želite pretvoriti določen niz, kot je 'True' ali 'False', v 1,0, uporabite funkcijo strtobool() v modulu distutils.util.
določanje več pogojev ali negacij z logičnimi operatorji (in, ali, ne)
Logične operatorje (and, or, not) lahko uporabite za logično konjunkcijo, logično disjunkcijo in negacijo več pogojev.
operater | (Rezultat (v pogojnem izrazu stavka if) |
---|---|
x and y | true, če sta oba x in y resnična |
x or y | true, če je x ali y resničen |
not x | false, če je x true, true, če je x false |
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
Dejansko “x in y” in “x ali y” ne vračata True ali False, temveč bodisi x bodisi y. Dokler ju uporabljamo v pogojnih izrazih v stavkih if, nam z njima ni treba skrbeti, saj sta ovrednotena kot True ali False. Za podrobnosti glejte naslednji članek.
- POVEZANO:Pitonovi logični operatorji “in, ali, ne” (logična konjunkcija, logična disjunkcija, negacija)
Uporabiti je mogoče več kot enkrat in in ali.
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
Pogojni izrazi za nove vrstice in več vrstic
Kadar je uporabljenih več pogojnih izrazov, ki so povezani z “in” ali “ali”, in vsaka vrstica postane dolga, je včasih treba pogojni izraz prekiniti in ga zapisati v več vrsticah.
Prekinitev vrstice lahko naredite s povratno poševnico ali tako, da celotno vrstico zaprete v oglate oklepaje.
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
Vrstico lahko s povratno poševnico prekinete tolikokrat, kot želite. Prav tako lahko vrstico poljubno večkrat prekinete v oklepajih. Odmiki niso omejeni.
Upoštevajte, da je to tehnika, ki jo lahko uporabite kjer koli v kodi Pythona, ne le v stavkih if.