Kako napisati uvjetne grane s if izjavama u Pythonu

Poslovanje

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

operaterproizlaziti
x < yistina ako je x manji od y
x <= yistina ako je x manji ili jednak y
x > yistina ako je x veći od y
x >= yistina ako je x veći ili jednak y
x == yistina ako su vrijednosti x i y jednake
x != yistina ako vrijednosti x i y nisu jednakex is yistina ako su x i y isti objektx is not yistina ako x i y nisu isti objektx in yistina ako je x sadržano u yx not in yistina ako x nije sadržano u 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čiti
  • not 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.

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 yistina ako su i x i y istiniti
x or yistina ako je ili x ili y istinito
not xlaž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.

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.