Najnujnejše o pogojnem stavku

Pogojni stavek

Pogojni stavek nam omogoča, da enega ali več stavkov izvršimo samo, če so izpolnjeni vsi potrebni pogoji.

if pogoj1:
stavek1
elif pogoj2:
stavek2
elif pogoj3:
stavek3
else:
stavek4

Pogojni stavek je sestavljen iz obveznega dela if, poljubnega števila (lahko tudi 0) delov elif in največ enega dela else. V zgornjem primeru se bo izvedel natanko eden izmed štirih stavkov, kateri bo to, pa je odvisno od izpolnjevanja pogojev.

Če je izpolnjen pogoj1, se bo izvedel stavek1 (in noben drug). Če pogoj1 ni izpolnjen, se preveri pogoj2. Če je ta izpolnjen, se izvede stavek2. Če tudi pogoj2 ni izpolnjen, se preveri pogoj3. Če je ta izpolnjen, se izvede stavek3, sicer (če ni bil izpolnjen noben pogoj) pa se izvede stavek4.

Stavki morajo biti bolj odmaknjeni od roba, kot sam pogojni stavek.

Pri vsakem od delov lahko napišemo tudi po več stavkov skupaj.

if pogoj:
stavek1
stavek2
stavek3
else:
stavek4
stavek5

Če je treba izvesti samo en stavek, ga lahko napišemo takoj za dvopičjem, vendar moramo paziti, da s tem ne otežimo branja programa (program naj bo vedno napisan čimbolj pregledno).

if pogoj1: stavek1
elif pogoj2:
stavek2
stavek3
else: stavek4

Več o pogojih

Do sedaj smo za pogoje pisali samo logične izraze, lahko pa bi pogoj bil kakršen koli izraz. Pravimo, da pogoj ni izpolnjen, če ima eno izmed naslednjih vrednosti: False00.0"" ali '' (no, pogoj ni izpoljnjen tudi za vrednosti ()[]{}set()None, ki pa jih še ne znamo "dobiti"). V vseh ostalih primerih je pogoj izpolnjen.

Ko Python vrednosti pogoj, ki vsebuje logične operatorje and in/ali or, ga vrednosti samo tako daleč, da lahko določi vrednost celotnega pogoja. V pogoju p1 and p2 and p3 bi tako najprej ovrednotil pogoj p1, če je ta izpolnjen, še pogoj p2, če je tudi ta izpolnjen, pa še pogoj p3. Če kateri od teh pogojev ne bi bil izpolnjen, mu preostanka ni treba vrednosti, saj vemo, da celoten pogoj ne more biti izpolnjen. V takem primeru vrne vrednost pogoja, ki ni izpolnjen. Podobno velja za pogoj p1 or p2 or p3.

To nam prav pride na primer v primeru, ko bi morali narediti nekaj takega:

Če n deli število b ali pa je n enak 0, ... 

To sedaj lahko napišemo 

if (n == 0) or (b % n == 0) :

Če pa bi napisali

if (b % n == 0) or (n == 0) :

bi bilo narobe, saj bi Python najprej poskusil deliti z 0!



Primerjave lahko tudi verižimo: x < y < z pomeni isto kot x < y and y < z.

Če torej želimo preveriti, ali je vrednost spremeljivke ocena na intervalu [60, 69], to lahko napišemo na primer kot 

60 <= x < 70


Zadnja sprememba: ponedeljek, 29 oktober 2018, 15:03 PM