Learnly
Python с нуля/Глава 8/Урок 2

Практический проект: собираем всё вместе

Практический проект: собираем всё вместе

Пришло время применить всё что ты изучил. Мы напишем небольшую программу, менеджер задач в командной строке.

Что будет делать программа

  • Показывать список задач
  • Добавлять новые задачи
  • Отмечать задачи выполненными
  • Считать статистику

Шаг 1: Структура данных

Сначала решим как хранить задачи. Каждая задача, словарь с полями. Все задачи, список словарей:

tasks = [
    {"id": 1, "title": "Купить хлеб", "done": False},
    {"id": 2, "title": "Позвонить маме", "done": True},
]

Шаг 2: Функции

Разбиваем программу на функции, по одной на каждое действие:

def show_tasks(tasks):
    if not tasks:
        print("Список задач пуст")
        return

    print("\n=== Список задач ===")
    for task in tasks:
        status = "✓" if task["done"] else "○"
        print(f"[{status}] {task['id']}. {task['title']}")
    print()


def add_task(tasks, title):
    new_id = len(tasks) + 1
    task = {"id": new_id, "title": title, "done": False}
    tasks.append(task)
    print(f"✅ Задача добавлена: {title}")


def complete_task(tasks, task_id):
    for task in tasks:
        if task["id"] == task_id:
            task["done"] = True
            print(f"✅ Выполнено: {task['title']}")
            return
    print(f"Задача с id {task_id} не найдена")


def show_stats(tasks):
    total = len(tasks)
    done = sum(1 for task in tasks if task["done"])
    pending = total - done

    print(f"\n=== Статистика ===")
    print(f"Всего задач: {total}")
    print(f"Выполнено:   {done}")
    print(f"Осталось:    {pending}")

Шаг 3: Главный цикл

def main():
    tasks = []

    # Добавим несколько задач для начала
    add_task(tasks, "Изучить Python")
    add_task(tasks, "Сделать проект")
    add_task(tasks, "Написать резюме")

    while True:
        print("\nЧто делаем?")
        print("1, Показать задачи")
        print("2, Добавить задачу")
        print("3, Отметить выполненной")
        print("4, Статистика")
        print("0, Выйти")

        choice = input("\nВыбор: ").strip()

        if choice == "1":
            show_tasks(tasks)
        elif choice == "2":
            title = input("Название задачи: ").strip()
            if title:
                add_task(tasks, title)
        elif choice == "3":
            show_tasks(tasks)
            try:
                task_id = int(input("ID задачи: "))
                complete_task(tasks, task_id)
            except ValueError:
                print("Введи число")
        elif choice == "4":
            show_stats(tasks)
        elif choice == "0":
            print("До свидания!")
            break
        else:
            print("Неверный выбор")


main()

Что здесь использовано

  • Переменные, хранят данные
  • Список и словари, структура хранения задач
  • Функции, каждое действие вынесено в отдельную функцию
  • Цикл while, программа работает до команды выход
  • Условия if/elif, выбор действия по вводу
  • try/except, защита от неверного ввода
  • F-строки, форматирование вывода

Сохрани этот код в файл tasks.py и запусти: python3 tasks.py

💡 Задание: Добавь возможность удалять задачи. Или сохранять список задач в файл чтобы он сохранялся между запусками. Это отличная практика.