Lekcie
Podmienky - logické rozhodovanie programu
Náš program začne premýšľať. Pomocou podmienok určíš, ktorá časť kódu sa má vykonať a ktorá sa má preskočiť.
Ako programy rozmýšľajú
Na to aby programy riešili komplexné úlohy, tak musia vedieť podľa určitých podmienok rozmýšľať. Napríklad, keď nakupujete na e-shopoch, tak na základe počtu kusov na sklade sa zobrazia rôzne texty pod produktami - vypredaný, zostáva 5ks, atď. V tomto príklade vieme vyvodiť podmienky na základe ktorých sa určil zobrazený text. Teda, ak je počet kusov rovný nule, povieme používateľovi, že produkt je vypredaný. Ak je počet viac ako nula, zobrazíme ho. Na takomto princípe fungujú všetky podmienky, teda ak niečo platí, tak sa vykoná toto, ak nie vykoná sa niečo iné.
V podmienkach je používaný dátový typ bool, logická jednotka, ktorá buď platí alebo nie. Pripomeňme si jeho hodnoty - True a False.
if podmienka:
# Kód, ktorý chceme, aby bol vykonaný
Namiesto textu podmienka by sme napísali našu podmienku (je užívateľ prihlásený, je počet kusov viac ako 5, ...) s dvojbodkou na konci. Potom v ďalšom riadku, ktorý musí byť odsadený, by sme napísali kód, ktorý sa spustí. Pozor na to, že tento kód musí byť odsadený, obyčajne sa na to využíva klávesa TAB.
Komentáre v Pythone
- Určite si si všimol v predchádzajúcom bloku kódu zelený text, pred ktorým je # (hashtag). Toto sa v programovaní nazýva komentár, vďaka ktorému vieme písať text, ktorý je určený čisto pre vysvetlenie kódu.
- Akýkoľvek text za # sa neinterpretuje a nespustí sa ako kód.
Operátory porovnávania
Pre tvorenie podmienok potrebujeme poznať operátory porovnávania.
Rovná sa, nerovná sa (ekvivalencia)
Toto sú jedny z najviac využívaných operátorov. Rovná sa zapisujeme pomocou dvoch symbolov == (rovná sa). Pozor, ak by sme použili len jedno, Python by si myslel, že chceme priradiť hodnotu ku premennej.
Nerovná sa zapisujeme pomocou != (výkričník a rovná sa). Je to ako keď v matematike prečiarkneš znak rovná sa, len takýto znak neexistuje na klávesnici, tak sa zapisuje pomocou dvoch.
if pocet_ks == 0:
print("Produkt nemáme na sklade.")
if uzivatel_rola != "admin":
print("Nemáte dostatočný prístup.")
Väčší ako, menší ako, ...
V tabuľke nižšie sú všetky operácie, aj s príkladmi, ktoré tvoria podmienku z počtu. Sú používané s dátovými typmi int a float. Tieto operátory sú rovnaké ako tie z matematiky.
| Názov | Operátor | Príklad |
|---|---|---|
| Väčší ako | > | if x > 50: |
| Menší ako | < | if zadany_vek < 18: |
| Väčší ako alebo rovný | >= | if body >= 90: |
| Menší ako alebo rovný | <= | if dlzka_spravy <= 10: |
Čo ak podmienka neplatí?
Predstavme si, že chceme podľa veľkosti čísla vypísať dve rôzne správy. Ak číslo bude väčšie ako 50, vypíšeme, že číslo je moc veľké. Inak ak bude menšie ako alebo rovné 50, vypíšeme, že číslo má ideálnu veľkosť.
V takomto "buď-alebo" scenári, využijeme if a else. Pomocou else vieme rozšíriť podmienku tak, že keď naša podmienka je neplatná, tak sa spustí blok spadajúci pod else.
cislo = int(input("Napíšte číslo: "))
if cislo > 50:
print("Číslo je moc veľké.")
else:
print("Číslo má ideálnu veľkosť!")
Skús si v rámci mini-cvičenia zmeniť túto podmienku. Napríklad, aby sa vypísala správa "Číslo je moc veľké.", len ak sa cislo rovná alebo je väčšie ako 100 (alebo akékoľvek iné číslo). Môžeš skúsiť celý program prepísať, aby sa vypísala správa "Číslo je moc malé." namiesto "Číslo je moc veľké." - musel by si podmienku zmeniť na operátor menší ako (resp. menší ako alebo rovný) a zmeniť vypísanú správu.
Podmienky v podmienkach
Spolu s if a else vieme tvoriť ďalšie podmienky vo vnútri týchto blokov. V tomto príklade, ak sa cislo rovná nule, tak na to upozorníme. Ak sa nule nerovná, spustí sa naša originálna podmienka. Takýmto spôsobom vieme tvoriť komplexné podmienky.
cislo = int(input("Napíšte číslo: "))
if cislo == 0:
print("Číslo sa rovná nule!")
else:
if cislo > 50:
print("Číslo je moc veľké.")
else:
print("Číslo má ideálnu veľkosť!")
if pocet_ks == 0:
print("Tovar nemáme na sklade.")
else:
if pocet_ks == 1:
print("Zostáva posledný kus!")
else:
if pocet_ks < 5:
print("Zostáva posledných pár kusov")
else:
print("Tovar na sklade.")
Bloky kódu musia byť správne odsadené. Dávaj pozor, aby si nemal dve podmienky hneď pod sebou alebo aby si pod príazom if (resp. else) mal odsadený aspoň 1 riadok kódu. V prípade, že máš zle odsadený kód, tak Python vyhodí indentation error.
a = 54
b = 12
if a > 50:
print(a)
else:
print(b)
Napíš program, ktorý:
1. ak zadaný vek je menej ako 18, vypíše sa "Vstup deťom je zakázaný!".
2. ak zadaný vek je viac ako 64, vypíše sa "Dôchodcovia majú vstup zadarmo.".
3. ak neplatí ani jedna z podmienok, bude vypísané "Vitajte!".