8. diel - Podmienky (vetvenie) druhýkrát - Konštrukcia match v Pythone
V minulej lekcii, Podmienky (vetvenie) v Pythone, sme si ukázali, ako vetviť naše programy v Pythone.
V dnešnom Python tutoriále sa naučíme skladať podmienky pomocou
logických operátorov. Následne sa pozrieme na konštrukciu match
a vylepšíme našu kalkulačku.
Skladanie podmienok
Podmienky je možné skladať, a to pomocou dvoch základných logických operátorov:
Operátor | Zápis |
---|---|
a zároveň | and |
alebo | or |
Uveďme si jednoduchý príklad:
a = int(input("Enter a number between 10-20: "))
if a >= 10 and a <= 20:
print("The condition has been met.")
else:
print("You did it wrong.")
S tým si zatiaľ vystačíme. Operátory sa pomocou zátvoriek samozrejme dajú kombinovať:
a = int(input("Enter a number between 10-20 or 30-40: "))
if (a >= 10 and a <= 20) or (a >= 30 and a <= 40):
print("The condition has been met.")
else:
print("You did it wrong.")
Často budeme potrebovať postupnosť príkazov else
-
if
. V týchto prípadoch použijeme skrátené kľúčové slovo
elif
.
Match
Konštrukcia match
je v Pythone implementovaná od
verzie 3.10. Prakticky vychádza z konštrukcie switch
z
jazykov C#, Java a podobných.
Umožňuje nám (relatívne) zjednodušiť zápis viacerých podmienok pod
sebou. Spomeňme si opäť na našu kalkulačku v prvých lekciách, ktorá
načítala dve čísla a vypočítala všetky štyri operácie. Teraz si ale
budeme chcieť zvoliť, ktorú operáciu má vykonať kalkulačka. Bez
konštrukcie match
by sme napísali kód podobný tomuto:
print("Welcome to calculator!")
a = float(input("Enter first number: "))
b = float(input("Enter second number: "))
print("Choose one of the following operations: ")
print("1 - addition")
print("2 - subtraction")
print("3 - multiplication")
print("4 - division")
option = int(input())
if (option == 1):
result = a + b
elif (option == 2):
result = a - b
elif (option == 3):
result = a * b
elif (option == 4):
if b != 0:
result = a / b
else:
print("Division by zero is not allowed!")
result = "N/A"
if option > 0 and option < 5:
print(f"Result: {result}")
else:
print("Invalid option")
print("Thank you for using calculator.")
Po spustení kalkulačky a zadaní hodnôt bude vyzerať výstup takto:
Calculator without match:
Welcome to calculator!
Enter first number: 3.14
Enter second number: 2.72
Choose one of the following operations:
1 - addition
2 - subtraction
3 - multiplication
4 - division
1
Result: 5.86
Thank you for using calculator.
Teraz si skúsime napísať ten istý kód pomocou konštrukcie
match
:
print("Welcome to calculator!")
a = float(input("Enter first number: "))
b = float(input("Enter second number: "))
print("Choose one of the following operations: ")
print("1 - addition")
print("2 - subtraction")
print("3 - multiplication")
print("4 - division")
option = int(input())
result = 0.0
match option:
case 1:
result = a + b
case 2:
result = a - b
case 3:
result = a * b
case 4:
if b != 0:
result = a / b
else:
print("Division by zero is not allowed!")
result = "N/A"
if option > 0 and option < 5:
print(f"Result: {result}")
else:
print("Invalid option")
print("Thank you for using calculator.")
Vidíme, že kód je trochu prehľadnejší. Ak by sme
potrebovali v nejakej vetve match
spustiť viac príkazov,
zapíšeme ich k zodpovedajúcej vetve do bloku s odsadením. V Pythone tiež v
konštrukcii match
nie je nutný explicitný príkaz na opustenie
konštrukcie. Keď dosiahneme konca príkazov v danej vetve, zvyšok
match
sa preskočí:
x = 10 # Value for demonstration match x: case 10: print("Start of the block for value 10.") # Notice multiple statements in one case branch print("x is equal to 10. ") # within the indented block print("End of the block for value 10. Exiting match here.") case 20: print("x is equal to 20.") # case 30: print("x is equal to 30.") case _: print("x has a different value.")
Konštrukcia match
obsahuje ešte nepovinnú možnosť
case _:
. Tá zachytí všetky hodnoty, ktoré nezodpovedajú
žiadnej z predchádzajúcich volieb, a vykoná sa "defaultná" akcia. Skrátka
a dobre, case _:
slúži na obsluhu všetkých ostatných hodnôt,
ktoré neboli definované v predchádzajúcich vetvách match
bloku.
To je pre dnešok všetko
V nasledujúcom kvíze, Kvíz - Premenné, podmienky, dátové typy v Pythone, si vyskúšame nadobudnuté skúsenosti z predchádzajúcich lekcií.
Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 0x (929 B)
Aplikácia je vrátane zdrojových kódov v jazyku Python