Как сделать так, чтобы замена ошибок была для каждого случая своя?

мой код, не работает замена второй ошибки.

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( и на втором надо отдельно обрабатывать, чтобы не вводить всё время первое число, когда ошибка только на втором, но это уже громоздко будет выглядеть. Если только в отдельную функцию выносить. В общем, можно и дальше совершенствовать.

→ Ссылка