Теория
С чего начать полезную версию
Финальный проект легко усложнить ещё до первого запуска. Не будем. Для начала программа должна сделать три вещи: принять новое дело, запомнить его и показать в списке. Для этого уже хватает знакомых конструкций — списка, словаря, функций, условия и цикла.
tasks = []tasks.append({"id": 1, "title": "Повторить циклы", "done": False}) for task in tasks: print(task["id"], task["title"])Одно дело храним в словаре. В поле title лежит его текст, done позже покажет, выполнено ли оно, а id позволит выбрать нужную запись по номеру.
Оставляем программу открытой
Если программа выполнит одну команду и сразу закроется, пользоваться ей будет неудобно. После добавления дела мы обычно хотим посмотреть список или добавить ещё одно. Поэтому оставим меню в цикле и выйдем из него только по команде exit.
- Ветка add передаёт управление функции add_task.
- Функция создаёт словарь с номером 1 и добавляет его в tasks.
- После команды list мы видим только что добавленное дело.
- Команда exit доходит до break, и цикл заканчивается.
while True: command = input("Команда: ").strip().lower() if command == "list": show_tasks() elif command == "add": add_task() elif command == "exit": breakНе сохраняем пустую строку
Пользователь может нажать Enter или ввести несколько пробелов. Такое дело нам не нужно. strip() уберёт пробелы по краям, а проверка if not title вернёт нас в меню, не меняя список.
Собираем первую версию
Теперь соберём всё в файле task_manager.py. Переписывать программу наизусть не нужно. Лучше выберите одну команду — например, add — и проследите её путь от ввода до нового словаря в списке.
tasks = []next_id = 1 def show_tasks(): if not tasks: print("Список пока пуст") return for task in tasks: print(f'{task["id"]}. {task["title"]}') def add_task(): global next_id title = input("Новое дело: ").strip() if not title: print("Название не может быть пустым") return tasks.append({"id": next_id, "title": title, "done": False}) next_id += 1 print("Дело добавлено") while True: command = input("Команда (list, add, exit): ").strip().lower() if command == "list": show_tasks() elif command == "add": add_task() elif command == "exit": break else: print("Неизвестная команда")- Запустите пустой список. Команда list должна объяснить, что дел пока нет.
- Добавьте два дела. Они должны получить номера 1 и 2.
- Введите пробелы. Пустое дело не должно появиться.
- Завершите программу. Команда exit возвращает управление терминалу.
Практика
Как хранится одно дело
Одна запись хранится в словаре, а несколько словарей — в списке tasks.
Какая команда завершает программу
Ветка command == "exit" выполняет break и завершает while.
Почему пробелы не становятся делом
strip() удаляет пробелы по краям; результат можно проверить условием if not title.
Что видно в пустом списке
Если список пуст, функция печатает «Список пока пуст» и завершает работу.
Проверяем номера в первой версии
Первое дело получает id 1, второе — id 2.
Итог
Первая версия готова: программа не закрывается после одной команды, добавляет непустые дела и умеет показать весь список.
В следующем уроке продолжим с этого же файла. Добавим выбор дела по номеру, а затем — отметку выполнения, редактирование и удаление.
Прогресс
0 / 5Вы ещё не решали задания