TwiddleLab / Код / Строим на Python
Отладка как детектив
Что ты узнаешь
- Логическая ошибка даёт неверный ответ без красного сообщения.
- Отладка печатью: напечатай значения в нужном месте и сравни с тем, какими они должны быть.
- Начни с гипотезы, потом проверь её. Баг сидит между последним верным значением и первым неверным.
- Сначала проверь середину и дели пополам дальше: несколько зондов находят баг в длинной программе.
Как идёт урок
Красной ошибки нет. Игра просто говорит, что твоё среднее 0.
Запусти и посмотри на вывод.
Где, по-твоему, прячется баг?
Нажми на подозрительную строку. Можно наугад.
Проверь зондами.
Перетащи зонд в промежуток. Он печатает значения в этом месте рядом с тем, какими они должны быть.
Как отлаживают детективы.
Логическая ошибка это баг без сообщения об ошибке: программа работает и даёт неверный ответ.
Отладка печатью: вставь print(...) между строками, чтобы увидеть значения прямо там. Зонд здесь ровно это.
Начни с гипотезы, потом проверь. Баг между последним верным значением и первым неверным. Проверка середины и деление пополам находят его быстро.
Меньше всего зондов: программа на 12 строк с одним багом.
Сумма покупок должна быть 28, а печатается 33. Максимум четыре зонда. Норма 3.
Теперь исправь среднее.
Нажми на неверную часть строки 4, выбери исправление и нажми «Запуск».
Сложи числа от 1 до 10. Должно быть 55. А выходит 45.
Двигай конечное число range, пока сумма не станет верной.
Это написал ИИ-помощник. Он говорит, что проверил.
is_even(4) должно быть True, а is_even(7) False. Запусти и исправь.
Зонды уже стоят. Какая строка виновата?
Должно печататься True: среднее 22 больше 21.
Разложи дела.
Брось каждый пойманный сегодня баг в его папку.
Предыдущий урок: Считаем словарём · Следующий урок: Функции, которые вызывают функции · Часть курса: Строим на Python
Уроки интерактивные и работают на JavaScript. Включи его, чтобы играть.