v1.0.0

Python с нуля для ЕГЭ · Добавляем дела и выводим список

Урок курсаPython 35 задачБесплатно

Добавляем дела и выводим список

Начнём с простого: добавим командное меню, ввод нового дела и понятный вывод списка.

Теория

С чего начать полезную версию

Финальный проект легко усложнить ещё до первого запуска. Не будем. Для начала программа должна сделать три вещи: принять новое дело, запомнить его и показать в списке. Для этого уже хватает знакомых конструкций — списка, словаря, функций, условия и цикла.

tasks = []tasks.append({"id": 1, "title": "Повторить циклы", "done": False}) for task in tasks:    print(task["id"], task["title"])

Одно дело храним в словаре. В поле title лежит его текст, done позже покажет, выполнено ли оно, а id позволит выбрать нужную запись по номеру.

Оставляем программу открытой

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

Разберём на примере
Что происходит после команды add
Пользователь вводит add, затем «Купить тетрадь», затем list и exit.
  1. Ветка add передаёт управление функции add_task.
  2. Функция создаёт словарь с номером 1 и добавляет его в tasks.
  3. После команды list мы видим только что добавленное дело.
  4. Команда exit доходит до break, и цикл заканчивается.
while True:    command = input("Команда: ").strip().lower()    if command == "list":        show_tasks()    elif command == "add":        add_task()    elif command == "exit":        break
Проверьте себя
Почему условие цикла можно оставить True?
У программы есть явная команда 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("Неизвестная команда")
Как действовать
Проверяем, что первая версия работает
  1. Запустите пустой список. Команда list должна объяснить, что дел пока нет.
  2. Добавьте два дела. Они должны получить номера 1 и 2.
  3. Введите пробелы. Пустое дело не должно появиться.
  4. Завершите программу. Команда exit возвращает управление терминалу.
Проверьте себя
Почему next_id хранится отдельно от длины списка?
После будущего удаления длина уменьшится, а уже использованный номер нельзя безопасно выдать снова.

Практика

В какой коллекции удобно хранить вместе id, title и done одного дела?

Подсказка
У каждого поля есть имя-ключ.
Решение

Одна запись хранится в словаре, а несколько словарей — в списке tasks.

Какая команда завершает программу

Какую команду нужно ввести, чтобы цикл дошёл до break и программа завершилась?

Подсказка
После неё управление возвращается терминалу.
Решение

Ветка command == "exit" выполняет break и завершает while.

Почему пробелы не становятся делом

Какой строковый метод превратит введённые пробелы в пустую строку?

Подсказка
Он убирает пробелы в начале и конце строки.
Решение

strip() удаляет пробелы по краям; результат можно проверить условием if not title.

Что видно в пустом списке

Что напечатает show_tasks, если пользователь ещё не добавил ни одного дела?

Подсказка
Программа прямо сообщает, что показывать пока нечего.
Решение

Если список пуст, функция печатает «Список пока пуст» и завершает работу.

Проверяем номера в первой версии

Запустите программу, добавьте дела Читать и Практика, затем выполните list. Какой id получит дело Практика?

Подсказка
После каждого успешного добавления next_id увеличивается на единицу.
Решение

Первое дело получает id 1, второе — id 2.

Итог

Первая версия готова: программа не закрывается после одной команды, добавляет непустые дела и умеет показать весь список.

В следующем уроке продолжим с этого же файла. Добавим выбор дела по номеру, а затем — отметку выполнения, редактирование и удаление.

Прогресс

0 / 5
x

Вы ещё не решали задания