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")