Konštrukcia vetvenia umožňuje programu rozhodnúť sa a podľa potreby vykonať alebo nevykonať nejakú skupinu príkazov. Na čo nám je to dobré? V programovaní častokrát reagujeme rôzne buď to na rôzny vstup od používateľa, rôzne namerané hodnoty alebo sa správame rôzne v závislosti od času. Napríklad: automat na lístky ponúkne mladšiemu cestovateľovi lacnejšie cestovné; merač hladiny vody vyhlási poplach pri presiahnutí nejakej stanovenej hranice; program nastavujúci jas obrazovky po 20:00 zníži svietivosť na polovicu...
Program nižšie načíta od používateľa jedno číslo - jeho vek. Ak je vek aspoň 17, vypíše "Hura! Uz mozes legalne soferovat :)", ak nie, nevypíše nič.
vek = int(input("Kolko mas rokov?"))
if vek >= 17:
print("Hura! Uz mozes legalne soferovat :)")
Všimnite si syntax príkazu IF, začína kľúčovým slovom if, za ktorým nasleduje podmienka a dvojbodka. Ak je podmienka vyhodnotená ako pravdivá (platí), vykonajú sa aj nasledovné odsadené príkazy (v našom prípade iba jeden príkaz print).
Za kľúčovým slovom if musíme definovať podmienku. Zatiaľ budeme podmienku tvoriť ako porovnanie číselných hodnôt pomocou týchto operátorov:
Podobne ako v procedúre a cykle, aj v "tele" príkazu IF môžeme použiť viacero príkazov, dôležité je všetky ich odsadiť opužitím tabulátora. Pozri si ukážku:
vek = int(input("Kolko mas rokov?"))
if vek >= 17:
print("Hura! Uz mozes legalne soferovat :)")
print("Zatial iba s dozorom dospeleho")
print("Ale do roka aj bez neho :P")
Čo ak potrebujeme niekedy čosi vpísať a v opačnom prípade zas čosi iné? Napríklad ak by sme chceli pacientvi poradiť, či na základe vloženej teploty má horúčku alebo nie, mohli by sme to spraviť dvoma príkazmi IF:
teplota = int(input("Aku mas teplotu?"))
if teplota >= 37:
print("Mas horucku :(")
print("Lahni si a oddychuj.")
if teplota < 37:
print("Vsetko je OK.")
Použili sme opačné znamienka rovnosti s rovnakými hodnotami a premennými, program vždy niečo vypíše. Ak však budeme chcieť hranicu teploty upraviť, musíme to urobiť na dvoch miestach. Navyše ak niekto číta náš kód, musí si prečítať obe podmienky a uvedomiť, že sú k sebe opačné. Na takéto pŕipady existuje v Pythone prehľadnejší zápis:
teplota = int(input("Aku mas teplotu?"))
if teplota >= 37:
print("Mas horucku :(")
print("Lahni si a oddychuj.")
else:
print("Vsetko je OK.")
Namiesto vymýšľania opačnej podmienky môžeme použiť vetvu else. Pozor na odsadenie! Vetva else je súčasťou konštrukcie if, príkazy k nej priradené (odsadené tabulátorom pod riadkom obsahujúcim slovíčko else) sa vykonajú práve vtedy, ak je podmienka v príkaze if vyhodnotená ako nepravdivá.
Podmienka IF môže byť samozrejme súčasťou tela procedúry, cyklu alebo aj inej podmienky IF. Dôležité je dbať na odsadenie, pre každú "úroveň vnorenia" je na začiatku riadku jeden tabulátor.
hranica = int(input())
for i in range(1,20):
if i < hranica:
print("malo")
else:
print("strasne vela moc az priliz")