Vrnimo se k našemu primeru s plavalnim bazenom. Recimo, da bo vstopnica za otroke do vključno 5. leta starosti odslej zastonj. Polnoletni še vedno plačajo polno ceno, tisti vmes pa polovično. Nalogo sedaj rešimo tako, da se najprej vprašamo, ali je starost enaka najmanj 18 let. Če je, nastavimo spremenljivko cena
na polno ceno, sicer pa preverimo tudi, ali je starost večja od 5 let. Če je, je cena polovična, sicer pa znaša 0:
Popravimo program:
cena = float(input('Koliko stane vstopnica? ')) starost = int(input('Koliko let imaš? ')) if starost >= 18: c = cena else: if starost > 5: c = cena / 2 else: c = 0 print('Vstopnica zate stane ' + str(c) + ' EUR.')
Zaporedje else-if
se v programiranju pogosto uporablja, zato nam python ponuja okrajšavo elif
:
Program sedaj beremo takole: če je starost enaka najmanj 18, priredi spremenljivki c
vrednost spremenljivke cena
. V nasprotnem primeru preveri, ali je starost večja od 5. Če to drži, je cena polovična, sicer pa se bomo kopali zastonj.
Bi se kaj spremenilo, če bi v zadnjem programu besedo elif
nadomestili z besedo if
? Preveri za različne starosti in pojasni rezultate!
V stavku if-elif-elif-...-else
se vedno izvede natanko en blok (skupek stavkov). Če je pogoj izpolnjen že pri bloku if
, se izvedejo stavki v tem bloku, vsi ostali bloki pa se preskočijo. V nasprotnem primeru se preveri pogoj pri prvem bloku elif
; če je izpolnjen, se izvedejo pripadajoči stavki, preostali bloki pa se preskočijo. V nasprotnem primeru se preveri pogoj pri drugem bloku elif
itd. Blok else
se izvede le takrat, ko nobeden od pogojev pri blokih if
in elif
ni izpolnjen.