Často sa stane, že program potrebuje urobiť nejaké rozhodnutie. Program je vec, ktorá sa správa pri každom spustení rovnako. Nie však na každom vstupe. To znamená, že ten istý vstup vždy spôsobí rovnaké správanie programu. Kedže ale programu pri rôznych spusteniach môžeme dať rôzne vstupy, je nutné, aby na ne program nejako zareagoval. Často napríklad chceme, aby sa určitý kód spustil iba za splnenia nejakých podmienok.
Príkladom môže byť program, ktorý vypíše, či číslo na vstupe je alebo nie je 0.
Vhodným prostriedkom na dosiahnutie tohto správania programu
je príkaz if
(ak). Ten zjednodušene vyzerá
if <podmienka>:
<prikaz>
# <podmienka> aj <prikaz> sa zapisuju
# bez zobacikovitych zatvoriek, pozri priklad nizsie.
To znamená, že ak platí <podmienka>
vykonaj <príkaz>
. <podmienka>
je v tomto prípade akýkoľvek výraz vracajúci bool
(teda True
alebo
False
). Nezabudnite, že porovnávanie dvoch vecí sa vykonáva
pomocou dvoch rovná sa (==)
a nie jedného(=)
.
x = int(input())
if x == 0:
print("Je to nula!")
if x != 0:
print("Nie je to nula!")
V predchádzajúcom príklade je vidieť ešte jednu dôležitú vec a to odsadenie príkazov. Hovoríme o viditeľnej medzere v 3. a 5. riadku. Odsadením hovoríme Pythonu, že tento príkaz patrí k predchádzajúcej podmienke. Je to dôležité z dôvodu, keby chceme napr. pri splnení prvej podmienky vykonať viac ako jeden príkaz. V tomto prípade by stačilo len dopísať rovnako odsadený príkaz:
# Program zisti, ci je na vstupe 0.
x = int(input())
if x == 0:
print("Je to nula!")
print("Vypisem este toto!")
# Vstup1:
# 0
# Vystup1:
# Je to nula!
# Vypisem este toto!
# Vstup2:
# 3
# Vystup2:
# (prazdny)
Ak by sme druhý výpis neodsadili, Vypisem este toto!
by sa vypísalo aj
pre nenulový vstup. Odsadenie môžeme dosiahnúť pomocou stlačenia
tabulátora.
# Program zisti, ci je na vstupe 0.
x = int(input())
if x == 0:
print("Je to nula!")
print("Vypisem este toto!")
# Vstup1:
# 0
# Vystup1:
# Je to nula!
# Vypisem este toto!
# Vstup2:
# 3
# Vystup2:
# Vypisem este toto!
Tak ako v predchádzajúcom príklade sa občas stane, že existujú práve 2 možnosti toho čo chceme urobiť. Vtedy je nápomocný konštrukt
if <podmienka>:
<1. prikaz>
else:
<2. prikaz>
Teda ak platí podmienka vykonáme prvý príkaz a ak nie tak druhý.
x = int(input())
if x == 0:
print("Je to nula!")
else:
print("Nie je to nula!")
Poslednou možnosťou je, že máme viac ako 2 možnosti. Vtedy použijeme konštrukt
if <podmienka>:
<prikaz>
elif <podmienka>:
<prikaz>
elif <podmienka>:
<prikaz>
elif <podmienka>:
<prikaz>
else:
<prikaz>
Táto možnosť je vhodná práve keď máme 2 a viac možností pričom chceme
aby sa vykonala práve jedna. Počet elif
je ľubovolný ale pre
čitateľnosť zväčša neodporúčame viac ako 3
-4
.
# na semafore svieti zelena, oranzova, alebo cervena, podla toho sa rozhodujeme, co urobit
if farba == "zelena":
print('chod')
elif farba == "oranzova":
print('priprav sa')
else:
print('stoj')
Znova si všimnite, že každý príkaz za dvojbodkou je na samostatnom riadku a je odsadený od podmienky.