Python: Маршрутизатор задач: Enum вместо строковых констант

Маршрутизатор задач: Enum вместо строковых констант

Ты пишешь консольный маршрутизатор задач. Программа получает список задач с их статусами и приоритетами, а затем формирует сводку по каждому статусу.

Что уже дано

Проверяющая система ничего не создаёт заранее. Программа получает все данные через stdin и должна напечатать результат в stdout.

В редакторе есть незавершённый каркас с объявленными перечислениями и TODO-местами.

Что нужно сделать

В редакторе уже импортирован Enum. Тебе нужно:

  1. Объявить class Status(Enum) с тремя членами:
  • TODO = 'todo'
  • IN_PROGRESS = 'in_progress'
  • DONE = 'done'
  1. Объявить class Priority(Enum) с тремя членами:
  • LOW = 1
  • MEDIUM = 2
  • HIGH = 3
  1. Написать программу, которая читает задачи из 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]
РешениеPython

Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.

Отправьте решение, чтобы увидеть результаты тестов.

Связанные задачи