Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Podmíněný příkaz

Často se budeme chtít v programu rozhodovat, co vykonat v dalších krocích. Použijme příklad z první kapitolky, kde jsme zkoumali zápis algoritmu pro ověření sudosti čísla. Chceme, aby program vypsal Číslo je sudé pokud je číslo dělitelné dvěma beze zbytku. Jinak vypíšeme Číslo je liché.

Podmíněný příkaz zapíšeme pomocí klíčových slov if a else. Za slovo if patří podmínka, podle které se bude program rozhodovat, zdali vykoná řádky mezi if a else a přeskočí řádky pod else, nebo jestli přeskočí řádky mezi if a else a vykoná řádky pod else.

cislo = 19

if cislo % 2 == 0:
    print("Číslo je sudé")
else:
    print("Číslo je liché")

Povšimneme si také dvojteček, které jsou na konci řádků s if a else. Je také nesmírně důležité nezapomenout odsadit řádky, na které chceme, aby se podmínky vztahovaly, odsadit. Toho můžeme docílit vybráním textu s nimi a stisknutím tabulátoru.

Věnujme se teď části s podmínkou: cislo % 2 == 0. Nešálí vás zrak, opravdu vidíte dvě rovnítka za sebou. Jedno rovnítko slouží k přiřazení do proměnné (tak jak to je na prvním řádku). Dvojité rovnítko ověřuje rovnost a vrací boolean, tedy hodnotu pravda (True) nebo nepravda (False). Pokud je výsledek podmínky za if roven True, spustí se pouze odsazený kód mezi if a else.

Stejně jako hodnoty můžeme podmínky ukládat v proměnných – jsou to také výrazy. Podmínku z příkladu můžeme uložit do proměnné a náš program učiníme čitelnějším.

cislo = 19

cislo_je_sude = cislo % 2 == 0

if cislo_je_sude:
    print("Číslo je sudé")
else:
    print("Číslo je liché")

Je hezké, že program můžeme číst skoro jako přírozený jazyk, tedy “Pokud (if) je číslo sudé, vytiskni …, jinak vytiskni …”.

Zkusíme nyní napsat program, který odhalí nenulová čísla. Vytvoříme podmínku “číslo není nula” a pokud platí, vypíšeme text.

cislo = 18

cislo_neni_nula = cislo != 0

if cislo_neni_nula:
    print("Číslo není nulové")

Použili jsme podmiňovací operátor !=, tedy nerovná se. Také vidíme, že pokud je číslo nulové, nic nevypíšeme – celý blok else je totiž volitelný.

Tip

Pokud bychom nemohli použít operátor !=, můžeme použít klíčové slovo not. To podmínku v proměnné zneguje.


cislo = 18

cislo_je_nula = cislo == 0

if not cislo_je_nula:
    print("Číslo není nulové")

Podmínky také můžeme spojovat pomocí klasických logických spojek “a” a “nebo”. Těmto operacím odpovídají klíčová slova and a or. Program, který vypíše, jestli je číslo sudé a zároveň nenulové může vypadat takto:

cislo = 18

cislo_je_sude = cislo % 2 == 0
cislo_neni_nula = cislo != 0

if cislo_neni_nula and cislo_je_sude:
    print("Číslo není nulové a je sudé")

V konstrukci if-else můžeme použít ještě jedno klíčové slovo, a to je elif (zkrácenina slov else if). V klasickém if-else bloku se kód v if vykoná právě když je podmínka pravdivá, jinak se vykoná kód v else. Pokud bychom chtěli po neúspěšném if vykonat jiný kód, ale pouze pod nějakou jinou podmínkou, použili bychom elif.

score = 85

if score >= 90:
    grade = 1
elif score >= 80:
    grade = 2
elif score >= 70:
    grade = 3
elif score >= 60:
    grade = 4
else:
    grade = 5

print(f"Tvoje známka je {grade}.")

V podmínkách můžeme vytvářet nové proměnné a měnit proměnné, které již existují. Důležité je, že nové proměnné zůstávají existovat i mimo if-else blok; to nám umožňuje vypsat proměnnou grade až po vyhodnocení podmínky. Program bychom samozřejmě mohli napsat i tak, že by v každé podmínce byl samotný print, ale znovu platí to, že kdybychom chtěli změnit to, co vypisujeme, museli bychom změnit více výskytů.

Zde se také setkáváme s porovnávacím operátorem >= (větší nebo rovno). Pokud bychom chtěli ověřit, zdali je číslo striktně větší, použijeme operátor > (větší). Analogicky pro menší nebo rovno použijeme operátor <= (menší nebo rovno) a pro striktně menší použijeme operátor < (menší).

Úlohy

Liché
Napište program, pro číslo vytiskne “Liché”, pokud je číslo liché, nebo nic. Zkuste vhodně použít operátor pro negaci podmínky.
Kvadratická rovnice
Napište program, který řeší kvadratickou rovnici. Budou zadány koeficienty a, b a c a program vypíše reálná řešení. Pokud řešení neexistuje, program vypíše “Neexistuje řešení”.