Martin Svoboda

Martin Svoboda - Blog

Podmínky 4: else a elif


V této části se zaměříme na vylepšení naší schopnosti větvit tok kódu pomocí příkazů else a elif. Tyto příkazy rozšiřují základní podmíněné struktury a umožňují efektivnější a přehlednější kontrolu nad tím, které části kódu se vykonají.

Příkaz Else

Příkaz else se používá jako doplněk k příkazu if a provede se pouze tehdy, když podmínka v if není splněna. Jednoduše řečeno, else je kód, který se spustí, pokud žádná z předchozích podmínek if nebyla pravdivá.

# podmínky - else

heslo = input("Zadej heslo: ")

if heslo == "tajne":
    print("Správné heslo.")
else:
    print("Nesprávné heslo.")

V tomto případě, pokud je hodnota proměnné heslo rovna "tajne", vytiskne se zpráva "Správné heslo.". Pokud není, spustí se blok kódu pod else a vytiskne se "Nesprávné heslo.".

Příkaz else je nepovinný a patří mezi příkazy, které vylepšují čitelnost kódu. Bez else bychom museli použít další if. Podívejme se na stejný příklad napsaný pomocí dvou příkazů if místo jednoho if a else:

heslo = input("Zadej heslo: ")

if heslo == "tajne":
    print("Správné heslo.")

if heslo != "tajne":
    print("Nesprávné heslo.")

Tento kód dělá to samé, ale je hůře interpretovatelný a méně efektivní, protože vyhodnocuje dvě podmínky místo jedné. Použití else dělá kód čitelnějším a rychlejším, což je důležité zejména u složitějších programů.

Dokonce i na diagramu to může vypadat složitěji, pokud použijeme dva příkazy if:

Příkaz elseDva příkazy if
Diagram větvení kódu pomocí příkazů if a elseDiagram větvení kódu pomocí dvou příkazů if

Příkaz Elif

Klíčové slovo elif je zkratkou pro “else if”. Umožňuje přidat do podmíněného bloku další úroveň podmínek bez nutnosti vnořování nebo použití dalších příkazů if s, někdy hůře pochopitelným, and, or, apod.. Díky elif můžeme snadno vytvořit více větví pro různé podmínky.

# podmínky - elif

pocet_bodu = 100

if pocet_bodu < 10:
    print("Nedostatečný počet bodů.")
elif pocet_bodu < 20:
    print("Postačující počet bodů")
elif pocet_bodu < 30:
    print("Dobrý počet bodů")
else:
    print("Výborný počet bodů")

Tento kód kontroluje různé rozsahy hodnot pro proměnnou pocet_bodu. Jakmile je jedna z podmínek splněna, další elif ani else se už netestují, což opět zlepšuje efektivitu a čitelnost.

Bez elif bychom museli použít další if, tak jsme to udělali v minulé části o podmínkách. Opět pro srovnání:

pocet_bodu = 100

if pocet_bodu < 10:
    print("Nedostatečný počet bodů.")
if pocet_bodu >= 10 and pocet_bodu < 20:
    print("Postačující počet bodů")
if pocet_bodu >= 20 and pocet_bodu < 30:
    print("Dobrý počet bodů")
if pocet_bodu >= 30:
    print("Výborný počet bodů")
S příkazem elif a elseVíce příkazů if
Diagram větvení kódu pomocí příkazů if a elifDiagram větvení kódu pomocí více příkazů if

Shrnutí

Kód s použitím elif a else je kratší, pro čtenáře kódu je jasné, že všechny podmínky patří k sobě. Kód se větví skutečně v jednom body a začíná to podmínkou if. Použítí operátoru and jsme se vyhli, protože pokud je podmínka splněna, tak další elif se již netestují a kód pokračuje za kódem s podmínkami.

Souhrnně řečeno, elif nám umožňuje řetězit více podmínek dohromady, zatímco else poskytuje výchozí akci, když všechny podmínky if a elif selžou. Společně poskytují if, elif a else účinný způsob, jak řídit tok programu.

Kontrolní Otázky

Pokud to dokážeš vysvětlit někomu jinému vlastními slovy, jsi na dobré cestě tomu rozumět. Dokážeš odpovědět na tyto otázky?

  1. Vysvětlelte rozdíl mezi příkazy if, elif a else v jazyce Python.
  2. Co znamená klíčové slovo elif a kdy by se mělo použít?
  3. Jak Python pracuje s více příkazy elif za sebou?
  4. Co se stane, když v bloku kódu není splněna žádná z podmínek if nebo elif?
  5. Popište úlohu odsazení v podmíněných souborech jazyka Python.
  6. Lze použít příkaz else bez předchozího příkazu if? Jak je to s příkazem elif?
  7. Uveďte příklad úryvku kódu, ve kterém byste použili příkaz else.
  8. Proč je efektivnější použít příkaz elif místo více příkazů if?

Kvízy

Kvíz:

Jaký je výstup následujícího kódu v jazyce Python?

x = 50

if x < 10:
    print("Méně než 10.")
elif x < 30:
    print("Mezi 10 a 30.")
elif x < 50:
    print("Mezi 30 a 50.")
else:
    print("50 nebo více.")
  1. Méně než 10.
  2. Mezi 10 a 30.
  3. Mezi 30 a 50.
  4. 50 nebo více.
Kvíz:

Která z následujících možností je pravdivá o příkazu else v jazyce Python?

  1. Příkaz else může existovat i bez příkazu if.
  2. Příkaz else se provede pouze tehdy, je-li podmínka příkazu if pravdivá.
  3. Příkaz else se provede pouze tehdy, je-li podmínka příkazu if nepravdivá.
  4. Příkaz else se provede bez ohledu na to, zda je podmínka příkazu if pravdivá nebo nepravdivá.
Kvíz:

Kolik příkazů elif může být za příkazem if?

  1. Žádný
  2. Pouze jeden
  3. Pouze dva
  4. Kolik chceme
Kvíz:

Co v jazyce Python znamená klíčové slovo elif?

  1. else if
  2. else in
  3. else odsazení
  4. else increment

Cvičení

Cvičení 1: Základní podmínka if-else

Napište program v jazyce Python, který požádá uživatele o zadání čísla. Pokud je číslo menší než 10, vypište "Toto číslo je menší než 10.". Pokud je číslo větší než 10, vypište "Toto číslo je větší než 10.".

Cvičení 2: Podmínka if-elif-else

Napište program v jazyce Python, který požádá uživatele o zadání jeho věku. Pokud je věk menší než 13 let, vypište "Jste dítě.". Pokud je věk 13 až 19 let, vypište "Jsi teenager.". Pokud je věk vyšší než 19 let, vypište "Jste dospělý".

Cvičení 3: Vnořené podmínky if

Napište program v jazyce Python, který požádá uživatele o zadání čísla. Pokud je číslo kladné, zkontrolujte, zda je sudé nebo liché, a vypište příslušnou zprávu. Pokud je číslo záporné, vypište "Číslo je záporné.", apod.

Cvičení 4: Logické operátory

Napište program v jazyce Python, který požádá uživatele o zadání čísla. Pokud je číslo menší než 0 nebo větší než 100, vypište "Číslo je mimo rozsah.". Pokud je číslo v rozmezí 0 až 100 včetně, vypište "Číslo je v rozmezí.".

Cvičení 5: Složené podmínky

Napište program v jazyce Python, který požádá uživatele o zadání jeho věku a zda má řidičský průkaz (ano/ne). Pokud je osobě více než 18 let a má řidičský průkaz, vypište "Jste způsobilý k řízení.". Pokud je osobě více než 18 let, ale nemá řidičský průkaz, vypište "Musíte si udělat řidičský průkaz". Pokud je osobě méně než 18 let, vytiskněte "Jste příliš mladý na řízení".