Nauč se Python > Kurzy > Začátečnický kurz PyLadies > Testování > Výjimky

Výjimky – Řešení [0]

Možné řešení:

try:
    # Následující dvě řádky vyhodí ValueError pokud vstup není číslo
    prvni_cislo = int(input("Zadej první číslo: "))
    druhe_cislo = int(input("Zadej druhé číslo: "))

    operand = input("A co s nimi mám udělat? * / + nebo -  ")

    if operand == "+":
        vysledek = prvni_cislo + druhe_cislo
    elif operand == "-":
        vysledek = prvni_cislo - druhe_cislo
    elif operand == "*":
        vysledek = prvni_cislo * druhe_cislo
    elif operand == "/":
        # Pokud je `druhe_cislo` nula, následující řádka vyhodí `ZeroDivisionError`
        vysledek = prvni_cislo / druhe_cislo
    else:
        # Vstupem je operand, se kterým neumíme počítat, nebo nějaký nesmysl
        # S nesmyslem počítat také neumíme, takže vyhodíme `ArithmeticError`
        # Volba výjimky je ale na nás, vhodný by mohl být i `SyntaxError`
        raise ArithmeticError

except ValueError:
    # Zachytili jsme `ValueError` z načítání čísel
    print("Jedno z čísel bylo špatně zadané. Musíš být pečlivější.")
except ZeroDivisionError:
    # Tady jsme zachytili dělení nulou
    print("Nemůžeš dělit nulou!")
except ArithmeticError:
    # Tady jsme zachytili `ArithmeticError`, který program vyhodí
    # v případě špatně zadaného operátoru
    print("Tuhle operaci provést neumím.")
else:
    # Else větev ve spojení s `try` blokem proběhne pouze, pokud v `try` bloku
    # nenastala žádná vyjímka
    print(prvni_cislo, operand, druhe_cislo, "=", vysledek, sep=" ")
finally:
    # Tohle proběhne "nakonec", ať už k nějaké vyjímce došlo nebo ne
    print("Děkuji za použití této skvělé kalkulačky")

Toto je stránka lekce z kurzu, který probíhá nebo proběhl naživo s instruktorem. Přejít na stejnou lekci v kurzu pro samouky.