Трекер привычек · Шаг 1 из 4
Разобрать отметку
Отмечают привычку как говорят: «зарядка», «вчера бег», «29.10.2026 чтение на ночь». Человек забыл отметить вчерашнюю пробежку — он напишет «вчера», а не будет вспоминать число. А отметку из будущего или 31 февраля записывать нельзя: такая серия была бы враньём.
Что сделать
Разберите отметку: в какой день и какая привычка. Дату можно не писать, написать словом или числами.
Что приходит
stroka— что написал человек, например"вчера бег"segodnya— какое сегодня число,datetime.date
Что вернуть
Пару (день, привычка): день — datetime.date, привычка — строчными, слова через один пробел; ошибка — ValueError.
Допишите функцию razobrat_otmetku в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В проекте
Программа зовёт razobrat_otmetku на команду «отметить …» и дописывает отметку в журнал. Текст вашей ошибки она показывает человеку: «Не понял: …».
Сегодня 31 октября 2026. «вчера зарядка» — это 30 октября:
(datetime.date(2026, 10, 30), 'зарядка').
from datetime import date
razobrat_otmetku("вчера зарядка", date(2026, 10, 31))
(datetime.date(2026, 10, 30), 'зарядка')
Разбейте строку на слова. Первое слово, без учёта заглавных, может быть днём:
- «сегодня», «вчера», «позавчера» —
segodnyaминус 0, 1 или 2 дня; ДД.ММ.ГГГГ— день и месяц одной или двумя цифрами, год четырьмя:29.10.2026,1.3.2026;ГГГГ-ММ-ДД— ровно2026-10-29.
Если первое слово — день, привычка — остальные слова. Иначе день — segodnya, а привычка — все слова: «2 стакана воды» — привычка, не дата.
Привычка — строчными буквами, слова через один пробел.
ValueError с понятным текстом, если: строка пустая; после дня нет привычки; дата похожа на дату, но такого дня нет (31.02.2026); день позже segodnya.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.