В КУРСЕ?

Разбираемся в теме

Первый скрипт на Python: как не получить красивый итог из неверных данных

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

Текст ещё не является числом

При чтении текстового файла Python получает строки. Запись из цифр нужно преобразовать в число, если планируется арифметика. Функция int выполняет преобразование в целое число, однако неподходящий текст вызывает исключение ValueError. Например, строка с буквами не становится корректным количеством сама по себе. Дополнительное правило задачи может требовать неотрицательных значений: преобразование отрицательного числа успешно, но по смыслу вход остаётся неподходящим. Поэтому техническое преобразование и проверка предметного условия являются разными этапами. Удаление пробелов по краям также не исправляет произвольные символы внутри записи.

Ошибка должна оставлять понятный след

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

Чтение и запись имеют разные последствия

У открытия файла есть режим. Режим чтения предназначен для получения данных, а режим записи способен стереть прежнее содержимое файла с тем же именем. Поэтому начинающему полезно сначала выводить результат на экран либо использовать отдельный учебный выходной файл. Для текстовых данных также задают подходящую кодировку. Конструкция with помогает корректно закрыть файл после завершения блока, включая ситуацию с исключением. Но она не подтверждает правильность расчёта. Надёжность сценария складывается из ясного входного формата, понятной обработки ошибок и проверки результата на небольших примерах.

Попробуйте на практике

Проведите на бумаге сценарий для пяти строк: 12, пустая строка, 7x, 05 и минус 3. Установка Python не требуется. По условию разрешены только неотрицательные целые количества, пустые строки пропускаются.

  1. Пронумеруйте строки от первой до пятой. Для каждой отдельно отметьте, является ли она пустой, преобразуется ли в целое число и соответствует ли условию задачи.
  2. Сложите только разрешённые значения. Запись 05 рассматривайте как текстовое представление числа пять, а не как выражение из исходного кода.
  3. Составьте перечень ошибок с номерами строк и разными причинами: неверный формат и отрицательное количество. Не заменяйте их молча нулями.
  4. Запишите итоговое сообщение: сумма корректных значений, число пропущенных пустых строк и число ошибок. Укажите, что общий результат неполный из-за некорректного входа.

Как проверить результат. Сумма корректных значений равна семнадцати, одна пустая строка пропущена, ошибки относятся к третьей и пятой строкам. Текст 7x не преобразуется в целое число, а минус три отклоняется уже по смысловому ограничению.

Частые вопросы

Если скрипт завершился без исключения, данные правильные?

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

Нужно ли сразу обрабатывать большой настоящий файл?

Нет. Сначала полезны небольшие искусственные примеры с известным результатом и специально добавленными ошибками. Они позволяют проверить правила, сохраняя исходные рабочие данные отдельно.

Самостоятельный разбор темы. Содержание конкретной обучающей программы здесь не представлено.

Зарегистрируйтесь, чтобы уточнить возможность доступа к этому материалу

Зарегистрироваться
← К списку материалов