Диагностика решения: тесты, контрпримеры и локализация ошибки
Отладка — это поиск причины ошибки в программе. Тестирование — проверка решения на заранее выбранных примерах. Для школьника эти навыки так же важны, как условия, циклы и списки, потому что большинство неправильных ответов появляется из-за невнимательности к деталям.
Начинайте тестирование не с большого набора данных, а с простого примера, который можно проверить вручную. Затем добавляйте граничные случаи: минимальное значение, одно число, пустую строку, одинаковые элементы, отрицательные числа, максимальную границу.
Печать промежуточных значений
Самый доступный способ отладки — временно вывести значения переменных.
numbers = [2, 4, 6]
total = 0
for number in numbers:
total += number
print('number =', number, 'total =', total)
print('answer =', total)После того как ошибка найдена, отладочные print нужно убрать, чтобы программа выводила только ответ.
Проверка функции тестами
Если часть решения оформлена функцией, ее удобно проверять отдельно.
def digit_sum(number):
total = 0
while number > 0:
total += number % 10
number //= 10
return total
assert digit_sum(123) == 6
assert digit_sum(900) == 9
assert digit_sum(0) == 0Третий тест показывает ошибку: текущая функция возвращает 0 для нуля, и это может быть правильным ответом, если условие просит сумму цифр числа. Такой пример нужно явно продумать, а не надеяться, что он не встретится.
Чек-лист перед отправкой
- Правильно ли прочитаны все входные данные?
- Совпадает ли формат вывода с условием?
- Проверены ли границы диапазонов?
- Нет ли деления на ноль?
- Работает ли код на минимальном примере?
Отладка экономит время на ОГЭ, ЕГЭ и олимпиадах. Вместо случайных исправлений школьник получает понятный процесс: воспроизвести ошибку, увидеть значения переменных, найти место расхождения с идеей и проверить исправление на нескольких тестах.
Источники
- Босова Л.Л. Информатика. Базовый курс: учебник для 7-9 классов. - М.: БИНОМ. Лаборатория знаний.
- Поляков К.Ю., Еремин Е.А. Информатика. 10-11 классы. Углубленный уровень.
- Python Documentation: The Python Tutorial.