В этом руководстве мы научимся создавать простое приложение 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 для решения практических задач. Удачи в программировании!