Код БарсикОсновы Python
Основы Python›C21 · Теория

Теория · C21

Ошибки и проверка данных

Разберись в теме, запусти пример и переходи к самостоятельным задачам.

РАЗБИРАЕМ ПО ШАГАМ

От идеи к работающему коду

Пользователь может ввести буквы вместо числа, а нужного файла может не оказаться. Научимся обрабатывать ожидаемые ошибки, не скрывая настоящие дефекты программы.

Сразу к запуску примера ↓
Барсик проверяет данные и помогает программе восстановиться после неверного ввода.
Барсик проверяет данные и помогает программе восстановиться после неверного ввода.
  1. 1Рискованная операция
  2. 2Конкретная ошибка
  3. 3Понятный ответ

1. Ошибка и исключение

Когда int не может преобразовать строку, возникает ValueError. Выполнение обычного кода прерывается. try позволяет указать небольшой блок, а except — действие при конкретном исключении.

Не помещай всю программу в один огромный try: тогда трудно понять источник сбоя. Лови ошибку рядом с операцией, которая действительно может её вызвать.

Python
text = "abc"try:    number = int(text)    print(number)except ValueError:    print("Введите целое число")

2. Деление на ноль

Деление обычных чисел Python на 0 вызывает ZeroDivisionError и для int, и для float. Можно заранее проверить делитель или обработать исключение.

Разные ошибки получают разные объяснения. Буквы вместо числа — не то же самое, что нулевой делитель. Сообщение должно помогать исправить ввод, а не просто говорить «Ошибка».

Python
try:    first = float(input("Первое число: "))    second = float(input("Делитель: "))    print(first / second)except ValueError:    print("Нужны числа")except ZeroDivisionError:    print("На ноль делить нельзя")

3. Отсутствующий и пустой файл

FileNotFoundError означает, что файл по указанному пути отсутствует. Пустой существующий файл читается успешно и возвращает пустую строку. Это два разных состояния.

У JSON есть ещё отдельная ошибка JSONDecodeError: файл существует, но текст не является корректным JSON. Не затирай такой файл автоматически — сначала сообщи о проблеме и сохрани данные для исправления.

Python
from pathlib import Pathtry:    text = Path("notes.txt").read_text(encoding="utf-8")except FileNotFoundError:    print("Файл не найден")else:    print("Файл пуст" if text == "" else text)

4. Проверка диапазона — отдельное правило

Успешное int("-5") не означает допустимый возраст. Проверка типа ввода и проверка бизнес-правила — разные шаги. Сначала преобразуем, затем проверяем диапазон.

Ожидаемые исключения перечисляем по имени. Пустой except или except Exception вокруг всего кода может скрыть опечатку и создать видимость успеха. Для неизвестной ошибки лучше видеть причину при разработке.

Python
while True:    try:        age = int(input("Возраст от 0 до 120: "))    except ValueError:        print("Введите целое число")        continue    if 0 <= age <= 120:        break    print("Возраст вне диапазона")print("Принято:", age)

Где легко ошибиться

  • Скрыть все ошибки через except: pass.
  • Подменить некорректное число нулём без предупреждения.
  • Принять пустой файл за отсутствующий.
Проверь понимание: Вызовет ли чтение пустого существующего файла FileNotFoundError?

Нет. Чтение вернёт пустую строку. Исключение относится к отсутствующему пути.

Обрабатываем неверный ввод

Запусти пример. Затем измени код или входные данные и проверь, как меняется вывод.

Пример входных данных

кот

Ожидаемый вывод

Нужно ввести целое число
main.pyPython · можно менять код

Подготавливаем редактор…

Загрузка Python…

Каждый ответ — с новой строки.

Твой вывод

Здесь появится результат запуска.

Дальше — самостоятельные задачи

  1. Обработать ввод abc вместо числа
  2. Обработать деление int и float на ноль
  3. Отличить отсутствующий файл от пустого