Lecture Thumbnail

Podmienky II. - vetvenie a komplexná logika

Život je zložitý a programy bývajú ešte zložitejšie. Naučíš sa riešiť situácie s viacerými možnosťami a spájať podmienky do logických celkov.

Vetvenie podmienok

V minulej lekcii sme tvorili zložitejšie podmienky pomocou tvorenia podmienok v blokoch inej podmienky. Tento spôsob je zbytočne pracný. Nižšie je príklad takéhoto programu, ktorý neskôr zlepšíme pomocou využitia elif.

V tomto príklade na základe hypotetickej dĺžky videa sa používateľovi vypíšu rôzne správy. Ako si ale môžeš všimnúť, takáto jednoduchšia podmienka zbytočne zaberá 7 riadkov kódu. Celý blok prvého else, vieme zapísať jednoduchšie pomocou elif. elif je príkaz,  ktorý sa spustí, ak podmienka nad ním nie je splnená (resp. nie je pravdivá). Taktiež jeho názov skratkou pre "else if". Vidíš takéto niečo v našom kóde? (Je to na riadku 3 a 4.)

Vysvetlenie tvorenia podmienok.

Logické operátory

Čo ak chceme skontrolovať viac podmienok naraz? Na to slúžia logické operátory, vďaka ktorým vieme spájať a kombinovať naše podmienky. V Pythone poznáme tri: and, or a not.

Operátor Význam Príklad
and Obe podmienky musia byť pravdivé. if vek >= 18 and vek <= 65:
or Aspoň jedna podmienka musí byť pravdivá. if den == "sobota" or den == "nedeľa":
not Neguje ("otočí") logickú hodnotu. if not je_prihlaseny:

Operátor and

Operátor and zabezpečí, že sa kód vykoná iba vtedy, ak sú splnené obe podmienky zároveň. Napríklad, ak chceme skontrolovať, či je používateľ plnoletý a zároveň nie starší ako 65 rokov (teda v produktívnom veku):

Operátor or

Operátor or sa spustí vtedy, ak aspoň jedna z podmienok je pravdivá. Napríklad, ak chceme skontrolovať, či je dnes víkend:

Operátor not

Operátor not neguje logickú hodnotu. Teda ak je niečo True, tak not z toho spraví False a naopak. Hodí sa vtedy, keď je prirodzenejšie vyjadriť podmienku negáciou.

Toto je rovnaké, ako keby sme napísali if je_prihlaseny == False, ale not je prehľadnejšie a kratšie.

Kombinovanie logických operátorov

Logické operátory môžeš kombinovať dohromady a tvoriť tak komplexné podmienky. Ak kombinuješ viac operátorov naraz, odporúčam používať zátvorky, aby bolo zreteľné, ktoré podmienky patria k sebe.

Reťazové porovnanie

Python ti dovoľuje zapísať podmienky s rozsahom čísel prehľadnejšie, ako si zvyknutý z matematiky - pomocou reťazového porovnania. Namiesto dvoch podmienok spojených s and vieš zapísať obe naraz:

Oba zápisy sú správne a fungujú rovnako. Reťazové porovnanie je viac čitateľné a bližšie k matematickému zápisu. Môžeš používať ktorýkoľvek štýl, záleží len na tebe.

Zopakuj si!

  1. Pomocou elif vieš pridať ďalšie vetvy rozhodovania bez zbytočného vnárania podmienok.
  2. Logické spojky and, or a not ti umožňujú spájať viaceré podmienky do jednej. 
  3. Reťazové porovnanie (napr. 18 <= vek <= 65) je skratka za dve podmienky spojené s and.
7. Cyklus while