Как сделать так, чтобы замена ошибок была для каждого случая своя?
мой код, не работает замена второй ошибки.
loop = True
while loop:
try:
x=int(input('Введите число 1: '))
y=int(input('Введите число 2: '))
loop = False
except ValueError:
print('Ошибка, введите число!')
except ZeroDivisionError:
print('Ошибка, на ноль делить нельзя!')
print(x/y)
Ответы (3 шт):
Автор решения: S. Nick
→ Ссылка
Добавьте еще одну проверку:
if y == 0: raise ZeroDivisionError # +++
loop = True
while loop:
try:
x=int(input('Введите число 1: '))
y=int(input('Введите число 2: '))
if y == 0: raise ZeroDivisionError # +++
loop = False
except ValueError:
print('Ошибка, введите число!')
except ZeroDivisionError:
print('Ошибка, на ноль делить нельзя!')
print(x/y)
Автор решения: Riangry
→ Ссылка
loop = True
while loop:
try:
x=int(input('Введите число 1: '))
y=int(input('Введите число 2: '))
print(x/y)
loop = False
except ValueError:
print('Ошибка, введите число!')
except ZeroDivisionError:
print('Ошибка, на ноль делить нельзя!')
Деление происходит за пределами отлавливаемого исключения, вариант выше рабочий
Автор решения: CrazyElf
→ Ссылка
Наиболее красиво будет вот так выглядеть, мне кажется. Переменная для управления циклом тут лишняя:
while True:
try:
x=int(input('Введите число 1: '))
y=int(input('Введите число 2: '))
print(x/y)
break
except ValueError:
print('Ошибка, введите число!')
except ZeroDivisionError:
print('Ошибка, на ноль делить нельзя!')
По-хорошему, конечно, исключения на первом int(input( и на втором надо отдельно обрабатывать, чтобы не вводить всё время первое число, когда ошибка только на втором, но это уже громоздко будет выглядеть. Если только в отдельную функцию выносить. В общем, можно и дальше совершенствовать.