Objasnite uvjetno grananje s if izjavama u Pythonu.
- Osnove if naredbi (if, elif, else)
- Navedite uvjete pomoću operatora usporedbe itd.
- Navedite uvjete brojem, popisom itd.
- Navedite više uvjeta ili negacija s logičkim operatorima (i, ili, ne)
- Uvjetni izrazi na novim i više redaka
Postoji i ternarni operator koji opisuje uvjetnu granu u jednom retku. Pogledajte sljedeći članak.
Osnove if naredbi (if, elif, else)
Osnovni oblik if naredbe je sljedeći
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” odgovara “else if” u C i drugim jezicima, a može postojati bilo koji broj “elifova”.
Ako postoji samo jedan uvjetni izraz ili obrada kada false nije potrebno, blokovi “elif” i “else” mogu se izostaviti.
Navedite uvjete pomoću operatora usporedbe itd.
Navedite uvjet s operacijom koja vraća bool tip (true, false), kao što je operator usporedbe.
Python operatori usporedbe su sljedeći
operater | proizlaziti |
---|---|
x < y | istina ako je x manji od y |
x <= y | istina ako je x manji ili jednak y |
x > y | istina ako je x veći od y |
x >= y | istina ako je x veći ili jednak y |
x == y | istina ako su vrijednosti x i y jednake |
x != y
x is y
x is not y
x in y
x not in y
Primjer. Radi praktičnosti, definiran je kao funkcija s naredbom 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
Sljedeće se može napisati na način koji je jedinstven za Python. Za detalje pogledajte sljedeći članak.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
#ERROR!
!=
Gore navedeno je usporedba vrijednosti; za usporedbu identiteta objekata upotrijebite sljedeće
is
is not
Na primjer, kada se uspoređuje cijeli broj i broj s pomičnim zarezom, “==” vraća true ako su vrijednosti ekvivalentne, ali “is” vraća laž jer su različiti objekti.
i = 10
print(type(i))
# <class 'int'>
f = 10.0
print(type(f))
# <class 'float'>
print(i == f)
# True
print(i is f)
# False
Također je moguće postaviti uvjet da li lista ili niz sadrži određeni element (znak).
in
:uključitinot in
:ne uključujući
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
Navedite uvjete brojem, popisom itd.
Uvjetni izraz if izraza može biti broj, popis ili drugi objekt koji nije tipa bool (true, false).
if 10:
print('True')
# True
if [0, 1, 2]:
print('True')
# True
U uvjetnom izrazu if naredbe Python, sljedeći se objekti smatraju lažnim.
- Konstante definirane kao lažne:
None
,false
- Nula u numeričkom tipu:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Prazna sekvenca ili zbirka:
'
,()
,[]
,{}
,set()
,range(0)
Truth Value Testing — Built-in Types — Python 3.10.4 Documentation
Brojevi koji predstavljaju nulu, prazne nizove, liste, itd. smatraju se lažnim; svi ostali se smatraju istinitim.
Kako je objekt ocijenjen može se provjeriti pomoću bool().
print(bool(10))
# True
print(bool(0.0))
# False
print(bool([]))
# False
print(bool('False'))
# True
Ovo se može koristiti za jednostavno pisanje procesa kada je popis prazan, na primjer.
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
Imajte na umu da će niz ‘False’ također biti istinit, jer kao što je prikazano u gornjem primjeru, svaki niz koji nije prazan u nizu bit će istinit.’ Da biste konvertirali određeni niz kao što je ‘True’ ili ‘False’ u 1,0, koristite strtobool() u modulu distutils.util.
Navedite više uvjeta ili negacija s logičkim operatorima (i, ili, ne)
Logički operatori (i, ili, ne) mogu se koristiti za obradu logičke konjunkcije, logičke disjunkcije i negacije više uvjeta.
operater | (Rezultat (u uvjetnom izrazu if naredbe) |
---|---|
x and y | istina ako su i x i y istiniti |
x or y | istina ako je ili x ili y istinito |
not x | lažno ako je x istinito, istinito ako je x lažno |
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
Zapravo, “x i y” i “x ili y” ne vraćaju True ili False, već ili x ili y. Sve dok se koriste u uvjetnim izrazima u if naredbama, nema potrebe brinuti o njima, budući da se ocjenjuju na Točno ili Netočno. Za detalje pogledajte sljedeći članak.
- POVEZANO:Pythonovi logički operatori “and, or, not” (logička konjunkcija, logička disjunkcija, negacija)
Moguće je koristiti i i ili više puta.
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
Uvjetni izrazi na novim i više redaka
Kada se koristi više uvjetnih izraza povezujući ih s “i” ili “ili” i svaki redak postane dug, ponekad je potrebno prekinuti uvjetni izraz i napisati ga u više redaka.
Prijelom retka može se napraviti korištenjem obrnute kose crte ili zatvaranjem cijelog retka u zagrade.
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
Možete koristiti obrnutu kosu crtu za prekid reda koliko god puta želite. Isto tako, možete prekinuti red bilo koji broj puta unutar zagrada. Nema ograničenja uvlačenja.
Imajte na umu da je ovo tehnika koja se može koristiti bilo gdje u Python kodu, ne samo u if izjavama.