Python: Маршрутизатор задач: Enum вместо строковых констант
Маршрутизатор задач: Enum вместо строковых констант
Ты пишешь консольный маршрутизатор задач. Программа получает список задач с их статусами и приоритетами, а затем формирует сводку по каждому статусу.
Что уже дано
Проверяющая система ничего не создаёт заранее. Программа получает все данные через stdin и должна напечатать результат в stdout.
В редакторе есть незавершённый каркас с объявленными перечислениями и TODO-местами.
Что нужно сделать
В редакторе уже импортирован Enum. Тебе нужно:
- Объявить
class Status(Enum)с тремя членами:
TODO = 'todo'IN_PROGRESS = 'in_progress'DONE = 'done'
- Объявить
class Priority(Enum)с тремя членами:
LOW = 1MEDIUM = 2HIGH = 3
- Написать программу, которая читает задачи из
stdin, разбирает каждую строку и выводит сводку.
Обязательные требования к логике:
- Для конвертации строки статуса в
StatusиспользуйStatus(raw_string)— обращение по значению. - Для конвертации числа приоритета в
PriorityиспользуйPriority(int_value)— обращение по значению. - В условиях сравнивай статус через
is:if task_status is Status.DONE. - Члены
StatusиPriorityнельзя сравнивать напрямую со строками или числами — только через.valueили через конвертацию.
Ввод и вывод
Программа читает данные из stdin и печатает результат в stdout.
Формат ввода
Первая строка — целое число n (количество задач).
Каждая из следующих n строк содержит три поля через пробел:
<название> <статус> <приоритет>
<название>— одно слово без пробелов;<статус>— одна из строк:todo,in_progress,done;<приоритет>— целое число:1(LOW),2(MEDIUM),3(HIGH).
Формат вывода
Три блока в порядке TODO, IN_PROGRESS, DONE. Каждый блок:
<STATUS.name>:
<название> [<Priority.name>]
Задачи внутри блока выводятся в порядке убывания приоритета (HIGH → MEDIUM → LOW), при равном приоритете — в исходном порядке ввода. Если в статусе нет задач, блок всё равно выводится с пустым телом (только заголовок).
Пример строки задачи в выводе: fix_bug [HIGH]
Пример
- Ввод
5 fix_bug done 3 write_docs todo 1 review_pr in_progress 2 add_tests todo 3 deploy done 2
- Вывод
TODO: add_tests [HIGH] write_docs [LOW] IN_PROGRESS: review_pr [MEDIUM] DONE: fix_bug [HIGH] deploy [MEDIUM]
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
Связанные задачи
- Класс, init, атрибуты экземпляра и методы — задача по Python
- Инкапсуляция и property в Python: исправьте класс температуры
- Специальные методы: repr, str, eq, len — задача по Python
- Python: Каталог товаров: dataclass, NamedTuple и field(defaultfactory=...)
- Наследование, super() и переопределение методов — задача по Python
- Python: Класс Event с альтернативным конструктором и валидацией
