Shanraq.org Shanraq.org
Выражения без скрытых преобразований
Общество

Информатика: создаём своего цифрового помощника Урок 29 из 38

Выражения без скрытых преобразований

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

Где мы на карте

Это урок 29 из 72 и часть блока Python (уроки 27–38). Опорная схема показывает проверяемые переходы. Продолжаем бумажный договор версии 0.3: пять исходов напоминания и исходные вымышленные задачи.

Выражения без скрытых преобразований

Ситуация и вопрос

Помощник должен напоминать, если задача не выполнена и осталось от нуля до двух дней. Ученик написал одно длинное выражение и получил неожиданное True. Что в нём сравнивается сначала? Вместо угадывания разложим правило на отдельные вопросы, как делали с бумажными карточками.

Новые слова без пропусков

Выражение вычисляет значение: days + 1 даёт число, days <= 2 — логический ответ. Оператор задаёт действие: +, <=, and, not. Операнды — значения, над которыми оно выполняется. Приоритет определяет порядок: умножение раньше сложения; скобки делают замысел явным. and требует истинности обеих частей; not done меняет логический ответ. Цепочка сравнений 0 <= days <= 2 включает оба края. Python не склеивает строку "2" с числом 1 в арифметическом сложении — тип надо преобразовать заранее.

Опорный сигнал

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

Разбираем шаг за шагом

Проверьте done=False, days=2: not done даёт True, диапазон 0 <= 2 <= 2 тоже True, значит всё выражение True. Поменяйте только days на −1: левая граница станет ложной. Затем поставьте done=True: даже при двух днях напоминание не требуется. Во второй строке примера сначала умножается 3 * 4, затем прибавляется 2: ответ 14, а не 20. Нарисуйте две маленькие таблицы до запуска.

Предскажите и проверьте

Закройте блок с выводом. По строкам проследите значения имён и напишите точный ожидаемый текст, включая регистр и порядок строк. Только затем выполните код из каталога step-03 командой python3 и сравните посимвольно. Поменяйте один вход; до запуска запишите новый прогноз. Если результат отличается, найдите первую строку расхождения, а не подгоняйте ответ задним числом.

days = 2
limit = 2
print(days + 1)
print(days <= limit)

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

3
True

Поймайте ошибку

Выражение days <= 2 случайно включает −1: это уже просроченная задача, а не будущая. Исправьте, добавив нижнюю границу 0 <= days. Выражение здесь ещё не обрабатывает отсутствие срока None; смешивать None с числом в сравнении нельзя. Сначала проверяйте, есть ли число.

Изменение проекта

Запишите в проекте правило not done and 0 <= days <= 2 как временную проверку чисел из тестовых карточек. До добавления даты в файл не выдавайте это число за сохранённый срок.

Задание и доказательство

Составьте таблицу для days = −1, 0, 1, 2, 3 при обоих значениях done. Сначала заполните 10 ответов карандашом, затем запустите код в цикле или вручную. Для каждого неверного прогноза подпишите, какая часть выражения изменила ответ. Не заменяйте объяснение фразой «так решил Python».

Перенос в новую ситуацию

Школьный кружок принимает заявки до 18:00 включительно. Какие знаки сравнения нужны для 17:59, 18:00 и 18:01? Здесь важны минуты и часовой пояс, так что наше выражение о календарных днях переносится как идея границы, а не готовый код.

Возврат через 1, 7 и 30 дней

Через 1 день восстановите правило и один граничный пример без страницы. Через 7 дней объясните ошибку в новом примере однокласснику. Через 30 дней повторите тест проекта, проверьте, что прежние записи и вывод сохранились, и снова перенесите правило на другую задачу.

Следующий урок

Далее: Условия Python и проверка границ

Если вы нашли ошибку или опечатку в тексте статьи, то сообщите нам об этом

Проверить доказательство проекта

Запишите наблюдение, объяснение, исправление ошибки и изменение своего проекта. Модель укажет первую перепутанную или недоказанную связь, но не даст готовый ответ.

Чтобы проверить, нужно войти. Войти

Комментарии (0)

Пока нет комментариев. Будьте первым.