IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

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

 

Predchádzajúci článok
Podmienky (vetvenie) v Pythone
Všetky články v sekcii
Základná konštrukcia jazyka Python
Preskočiť článok
(neodporúčame)
Kvíz - Premenné, podmienky, dátové typy v Pythone
Článok pre vás napísal Vašek Doškář
Avatar
Užívateľské hodnotenie:
3 hlasov
Autor pracuje jako pedagog v oblasti elektroniky, elektrotechniky a programování. Rád tvoří appky všeho druhu. Má přehled v jazycích C#, Java, Kotlin, Javascript, Python a Rust
Aktivity