Podmínky if elif else
Z minulého dílu víme, co jsou to datové typy a nyní je na čase se naučit podmínky. Vykonání podmínky zapisujeme příkazem if. To v angličtině znamená když.
Podmínkou if se můžeme programu zeptat zda nějaká hodnota platí a pokud platí, tak se spustí blok kódu pod If a pokud neplatí pomocí else se vykoná blok kódu, který je pod else.
Uvedeme si příklad pro podmínku if, který můžeme naprogramovat. Máme atrakci a vstup na atrakci je povolen pouze pokud máš více než 120 cm. Proto napíšeme program, který se tě zeptá kolik měříš centimetrů.
Když(if) je tvoje výška větší než 120 cm můžeš vstoupit na atrakci a pokud(else) je menší než 120 cm nemůžeš vstoupit na atrakci.
Pojďme se podívat jak takovou podmínku zapsat.
print("Vítej na horské dráze!") vyska = int(input("Kolik měříš centimetrů? ")) if vyska > 120: print("Můžeš jít na horskou dráhu. Užij si jízdu! ") else: print("Promiň, ale jsi moc malý na tuto jízdu. ")
Zkuste si spustit první příklad s podmínkou If a ukážeme si další příklad. V tomto příkladu budeme potřebovat operátor modulo, který jsme se naučili v prvním díle.
Pro připomenutí pro operátor modulo používáme znak % a tento operátor nám poskytne zbytek z dělení.
Pro tyto programy se hodí si udělat diagram a předem si rozmyslet, jak bude program vypadat a fungovat.
Napíšeme si program, do kterého zadáme číslo, a program nám řekne zda je číslo sudé a nebo liché.
print("Ahoj, zadej číslo a já ti řeknu zda je sudé a nebo liché") cislo = int(input("Které číslo chceš zkontrolovat? ")) modulo_cislo = cislo % 2 if modulo_cislo == 0: print("Zadal jsi sudé číslo") else: modulo_cislo == 1 print("Zadal jsi liché číslo")
Pojďmě se podívat na program, který máme napsaný pro zjištění, jestli je číslo sudé a nebo liché.
Na druhé řádce máme kód, který se zeptá uživatele na číslo a uloží číslo, které uživatel zadal do proměnné cislo.
Do proměnné modulo_cislo uložíme zbytek z dělení čísla, které nám uživatel zadal do proměnné cislo. Číslo, které nám uživatel zadal vydělíme 2. Toto máme na pátém řádku. Pokud je číslo sudé zbytek z dělení bude 0 a pokud bude číslo liché bude zbytek dělení 1.
Na konci programu máme naší podmínku když (if ) modulo_cislo (zbytek z dělení) se rovná 0 vypíše se text zadal jsi sudé číslo.
Pokud (else) se modulo_cislo (zbytek z dělení) se rovná 1 vypíše se text zadal jsi liché číslo.
Vnoření funkcí
Funkce můžeme do sebe vnořovat. Pojďme se vrátit k našemu příkladu s horskou dráhou a pojďme k výšce se zeptat ještě na věk a podle věku určit cenu za jízdu na horské dráze.
print("Vítej na horské dráze!") vyska = int(input("Kolik měříš centimetrů? ")) if vyska >= 120: print("Můžeš jít na horskou dráhu. Užij si jízdu!") vek = int(input("Kolik ti je let?")) if vek > 18: print("Cena je 50 korun") else: print("cena je 25 korun") else: print("Promiň, ale jsi moc malý na tuto jízdu.")

Vytvořili jsme program a nyní ho pojďme zkusit spustit. Pokud zadáme výšku menší než 120 centimetrů vykoná se blok kódu označený červenou šipkou na obrázku a přeskočí se blok kódu pod první podmínkou if a vykoná se blok pod else, které je k prvnímu if (na obrázku označené červenou šipkou).
Proto je v Pythonu extrémně důležité odsazování, pokud bychom kód odsadili do jiného bloku, program by nefungoval a nebo by fungoval špatně.
Když uživatel zadá hodnotu větší a nebo rovno 120 cm vykoná se blok kódu pod prvním if. Program se nás v tomto bloku zeptá na věk a uloží hodnotu do proměnné vek. Následně se vykoná vnořená podmínka if.
Když (if) věk je více jak osmnáct let cena je 50 korun pokud (else) se stane něco jiného, což v našem případě znamená, že věk je menší než 18 let cena je 25 korun.
elif
If a else jsou zcela jistě velký pomocník při programování, ale můžeme takto zadat pouze dvě podmínky. Proto můžeme podmínku rozvětvit pomocí elif. Podmínky se používají v konstrukci if/elif/else. Podmínek elif můžeme použít v programu kolik chceme např. if/elif/elif/elif/else.
Pojďme se vrátit k našemu příkladu s horskou dráhou a přidáme další cenu. První cena bude 15 korun pro děti mladší 12 let. Druhá cena 25 korun bude pro děti od 12 do 18 let, pro starší 18 let bude cena 50 korun
Zde je opět diagram našeho programu.
print("Vítej na horské dráze!") vyska = int(input("Kolik měříš centimetrů? ")) if vyska >= 120: print("Můžeš jít na horskou dráhu. Užij si jízdu!") vek = int(input("Kolik ti je let?")) if vek < 12: print("Cena je 15 korun") elif vek <= 18: print("Cena je 25 korun") else: print("Cena je 50 korun") else: print("Promiň, ale jsi moc malý na tuto jízdu.")
Při tvoření podmínek je nutné dát veliký pozor na pořadí v jakém se nám podmínky splní. Pokud bychom zadali první podmínku s osmnáctiletými a druhou podmínku pro děti do 12 let, program by nefungoval správně, protože by 12 leté děti byly splněni v podmínce pro osmnáctileté.
Úkoly
Úkol číslo 1
Vzpomínáš si na úkol s výpočtem BMI ? V tomto úkole si vylepšíš program na výpočet BMI.
Napiš rozšíření programu, které podle výsledku čísla BMI napíše, jak na tom jsi.
- Když bude BMI menší než 18 program napíše máš pod váhu
- Pokud bude BMI 18 -22 program napíše máš normální váhu
- Pokud bude BMI 22 – 28 program napíše máš trochu nadváhu
- Pokud bude BMI 28 – 33 program napíše jsi obézní
- Pokud bude BMI větší než 33 program napíše jsi fakt tlustý
# ? Neměň tento kód ? vyska = float(input("Zadej svojí výšku v m: ")) vaha = float(input("Zadej svoji váhu v kilogramech: ")) # ? Neměň tento kód ? #Odsud dolů piš svůj kód?
Úkol číslo 2
Rok má 365 dní ovšem každé 4 roky má rok 366 dní.
Toto pravidlo má ale své výjimky. Pokud rok je celé století, tak přestupný rok není, ale jednou za 400 let je i v celém století přestupný rok.
To znamená rok:
- 4 přestupný rok
- 8 přestupný rok
- 100 není přestupný rok
- 104 je přestupný rok
- 200 není přestupný rok
- 400 je přestupný rok
- 2000 je přestupný rok
- 2100 nebude přestupný rok
- 2400 bude přestupný rok
Napiš program, do kterého zadáš letopočet a program ti řekne, zda je nebo není přestupný rok. Nápověda: použij modulo.
# ? Neměň tento kód ? rok = int(input("Zadej rok, který chceš zjistit zda je přestupný: ")) # ? Neměň tento kód ? #Odsud dolů piš svůj kód?
Těžký úkol
úkol číslo 3
Nakresli diagram k programu a naprogramuj program na objednávku pizzy. Uživatel si objedná pizzu a má na výběr z několika možností.
- malá pizza 100 Kč
- střední pizza 125 kč
- velká pizza 150 kč
K pize jdou přiobjednat pepperony
- malá pizza + pepperony 15 Kč
- střední pizza + pepperony 25 Kč
- velká pizza + pepperony 25 Kč
Dále můžeš přiobjednat extra sýr který má pro všechny pizzy stejnou cenu 10 Kč
Program nechá uživatele vybrat jak velkou chce pizzu zda chce pepperony zda chce sýr a spočítá konečnou cenu pizzy.