Lekce 8 - Podmínky (větvení) podruhé - Konstrukce match v Pythonu
V minulé lekci, Podmínky (větvení) v Pythonu, jsme si ukázali, jak větvit naše programy v Pythonu.
V dnešním Python tutoriálu se naučíme skládat podmínky pomocí
logických operátorů. Následně se podíváme na konstrukci
match
a vylepšíme naši kalkulačku.
Skládání podmínek
Podmínky je možné skládat, a to pomocí dvou základních logických operátorů:
Operátor | Zápis |
---|---|
a zároveň | and |
nebo | or |
Uveďme si jednoduchý příklad:
a = int(input("Zadejte číslo v rozmezí 10-20: "))
if a >= 10 and a <= 20:
print("Zadal jsi správně")
else:
print("Zadal jsi špatně")
S tím si zatím vystačíme. Operátory se pomocí závorek samozřejmě dají kombinovat:
a = int(input("Zadejte číslo v rozmezí 10-20 nebo 30-40: "))
if (a >= 10 and a <= 20) or (a >= 30 and a <= 40):
print("Zadal jsi správně")
else:
print("Zadal jsi špatně")
Často budeme potřebovat posloupnost příkazů
else
-if
. V těchto případech použijeme zkrácené
klíčové slovo elif
.
Match
Konstrukce match
je v Pythonu implementována od verze
3.10. Prakticky vychází z konstrukce switch
z jazyků C#, Java a podobných. Umožňuje nám
(relativně) zjednodušit zápis více podmínek pod sebou. Vzpomeňme si opět
na naši kalkulačku v prvních lekcích, která načetla dvě čísla a
vypočítala všechny čtyři operace. Nyní si ale budeme chtít zvolit, kterou
operaci má kalkulačka provést. Bez konstrukce match
bychom
napsali kód podobný tomuto:
print("Vítejte v kalkulačce")
a = float(input("Zadejte první číslo: "))
b = float(input("Zadejte druhé číslo: "))
print("Zvolte si operaci: ")
print("1 - sčítání")
print("2 - odčítání")
print("3 - násobení")
print("4 - dělení")
operace = int(input())
if (operace == 1):
vysledek = a + b
elif (operace == 2):
vysledek = a - b
elif (operace == 3):
vysledek = a * b
elif (operace == 4):
if b != 0:
vysledek = a / b
else:
print("Nulou nelze dělit!")
vysledek = "N/A"
if operace > 0 and operace < 5:
print(f"Výsledek: {vysledek}")
else:
print("Neplatná volba")
print("Děkuji za použití kalkulačky.")
Po spuštění kalkulačky a zadání hodnot bude vypadat výstup takto:
Kalkulačka bez match:
Vítejte v kalkulačce
Zadejte první číslo: 3.14
Zadejte druhé číslo: 2.72
Zvolte si operaci:
1 - sčítání
2 - odčítání
3 - násobení
4 - dělení
2
Výsledek: 0.42
Děkuji za použití kalkulačky.
Nyní si zkusíme napsat tentýž kód pomocí konstrukce
match
:
print("Vítejte v kalkulačce")
a = float(input("Zadejte první číslo:"))
b = float(input("Zadejte druhé číslo:"))
print("Zvolte si operaci:")
print("1 - sčítání")
print("2 - odčítání")
print("3 - násobení")
print("4 - dělení")
volba = int(input())
vysledek = 0.0
match volba:
case 1:
vysledek = a + b
case 2:
vysledek = a - b
case 3:
vysledek = a * b
case 4:
if b != 0:
vysledek = a / b
else:
print("Nulou nelze dělit!")
vysledek = "N/A"
if volba > 0 and volba < 5:
print(f"Výsledek: {vysledek}")
else:
print("Neplatná volba")
print("Děkuji za použití kalkulačky, aplikaci ukončíte libovolnou klávesou.")
Vidíme, že kód je trochu přehlednější. Pokud bychom
potřebovali v nějaké větvi match
spustit více příkazů,
zapíšeme je k odpovídající větvi do bloku s odsazením. V Pythonu také v
konstrukci match
není nutný explicitní příkaz pro opuštění
konstrukce. Když dosáhneme konce příkazů v dané větvi, zbytek
match
se přeskočí:
x = 10 # Hodnota pro demonstrování match x: case 10: print("Začátek bloku pro hodnotu 10.") # Všimněme si více příkazů v jedné větvi case print("x je rovno 10. ") # v bloku s odsazením print("Konec bloku pro hodnotu 10. Zde dojde k opuštění match.") case 20: print("x je rovno 20.") # case 30: print("x je rovno 30.") case _: print("x má jinou hodnotu.")
Konstrukce match
obsahuje ještě nepovinnou možnost
case _:
. Ta zachytí všechny hodnoty, které neodpovídají
žádné z předchozích voleb, a vykoná se "defaultní" akce. Zkrátka a
dobře, case _:
slouží k obsluze všech ostatních hodnot, které
nebyly definovány v předchozích větvích match
bloku.
To je pro dnešek vše
V následujícím kvízu, Kvíz - Proměnné, podmínky, datové typy v Pythonu, si vyzkoušíme nabyté zkušenosti z předchozích lekcí.
Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 215x (2.49 kB)
Aplikace je včetně zdrojových kódů v jazyce Python