Как написать To Do List на Python: пошаговое руководство

В этом руководстве мы научимся создавать простое приложение To Do List на языке Python. Мы рассмотрим основные аспекты разработки, включая структуру проекта, использование типизации данных и комментариев, а также соблюдение стандартов PEP 8.

Приложение To Do List поможет нам понять, как управлять задачами и организовывать их выполнение. Особенно полезно это для тех, кто начинает изучение Python и хочет применять свои знания на практике.

Подготовка к проекту

Уточнение функциональности

Перед тем как начать, нам нужно уточнить, какие функции мы хотим реализовать в нашем To Do List. Например:

  • Добавление задачи
  • Удаление задачи
  • Пометка задачи как выполненной

Установка необходимых библиотек

Для нашего проекта мы будем использовать стандартные библиотеки Python, так что специальных установок не потребуется.

Создание структуры проекта

Создадим структуру папок и файлов, где будет находиться наш код:

todo_list/
│
├── main.py
└── task.py

Реализация функциональности

Теперь давайте перейдем к реализации функциональности нашего To Do List.

Определение класса задачи

# task.py

class Task:
    def __init__(self, title: str, completed: bool = False) -> None:
        """
        Инициализация класса Task.

        :param title: Название задачи.
        :param completed: Статус выполнения задачи.
        """
        self.title = title
        self.completed = completed

    def __str__(self) -> str:
        return f'{self.title} - ВЫПОЛНЕНА' if self.completed else f'{self.title} - НЕ ВЫПОЛНЕНА'

Мы создали класс Task, который будет представлять задачу в нашем списке. Обратите внимание на использование типизации данных и комментариев.

Создание класса ToDoList

# main.py
from task import Task

class ToDoList:
    def __init__(self) -> None:
        """
        Инициализация класса ToDoList.
        """
        self.tasks: list[Task] = []

    def add_task(self, task: Task) -> None:
        """
        Метод для добавления задачи.

        :param task: Экземпляр класса Task для добавления в список.
        """
        self.tasks.append(task)

Класс ToDoList будет содержать методы для добавления и удаления задач.

Методы для управления задачами

# main.py

class ToDoList:
    # другие методы инициализации и добавления

    def remove_task(self, task_title: str) -> None:
        """
        Метод для удаления задачи по названию.

        :param task_title: Название задачи для удаления.
        """
        self.tasks = [task for task in self.tasks if task.title != task_title]
Реклама

Мы реализуем метод удаления задачи по названию.

Взаимодействие с пользователем

Теперь давайте создадим простой интерфейс командной строки для взаимодействия с пользователем.

# main.py

def main() -> None:
    todo_list = ToDoList()

    while True:
        action = input('Введите действие (add/remove/show/exit): ')

        if action == 'add':
            title = input('Введите название задачи: ')
            todo_list.add_task(Task(title))
        elif action == 'remove':
            title = input('Введите название задачи для удаления: ')
            todo_list.remove_task(title)
        elif action == 'show':
            for task in todo_list.tasks:
                print(task)
        elif action == 'exit':
            break
        else:
            print('Неизвестное действие. Попробуйте снова.')

if __name__ == '__main__':
    main()

Мы организуем бесконечный цикл для ввода данных пользователем.

Тестирование и улучшение

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

Написание тестов

Мы можем использовать библиотеку unittest для создания тестов.

# test_main.py
import unittest
from main import ToDoList
from task import Task

class TestToDoList(unittest.TestCase):
    def test_add_task(self):
        todo_list = ToDoList()
        task = Task('Test Task')
        todo_list.add_task(task)

        self.assertIn(task, todo_list.tasks)

    def test_remove_task(self):
        todo_list = ToDoList()
        task = Task('Test Task')
        todo_list.add_task(task)
        todo_list.remove_task('Test Task')

        self.assertNotIn(task, todo_list.tasks)

if __name__ == '__main__':
    unittest.main()

Оптимизация кода

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

Заключение

В этом руководстве мы создали простое приложение To Do List на Python. Мы изучили такие аспекты, как типизация данных, комментарии и стандарты PEP 8. Теперь вы можете расширять свой To Do List, добавляя новые функции и улучшая интерфейс.

Дополнительные ресурсы

Теперь вы обладаете необходимыми знаниями для создания простых приложений и понимаете, как использовать Python для решения практических задач. Удачи в программировании!


Добавить комментарий