← Все вопросы

Почему программа падает с ошибкой, даже если я написал try-except? Описание:

Задан 2 месяца назад15 просмотров1 ответ
0

try: number = int(input("Введите число: ")) result = 100 / number print(f"Результат: {result}") except ValueError: print("Это не число!") Я же написал try-except! Почему ошибка не перехватилась? Как сделать, чтобы программа не падала при вводе 0?

1 ответ

0

а что именно ты вводил и какую ошибку получил? скинь полный traceback — по нему сразу всё видно.

навскидку самое вероятное: если ввёл 0, то падает уже на 100 / number с ZeroDivisionError, а ты ловишь только ValueError — это разные исключения, поэтому твой except мимо. except ValueError ловит буквально ValueError и ничего больше.

если хочешь поймать и деление на ноль:

except (ValueError, ZeroDivisionError):
    print("Нужно число, и не ноль")

но если ошибка у тебя не про ноль — покажи текст traceback, гляну точнее

Andromeda Galaxy Ты (вы) правильно понял(ли) · 2 месяца назад
Виктор Сорокин тогда всё сходится) чтобы не падало на нуле — лови оба исключения сразу: except (ValueError, ZeroDivisionError). или проще: сначала проверь, что number != 0, и только потом дели, а на ноль выведи своё сообщение. второй вариант даже нагляднее — деление на ноль это не «ошибка ввода», а обычная ситуация, которую логично обработать явным if · 2 месяца назад

Ваш ответ

, чтобы ответить на вопрос.