11. Мини-проект: заметки на Python

Зачем нужен мини-проект

Теория — это хорошо, но без практики знания быстро забываются. В этом уроке вы создадите реальное приложение для заметок, используя всё, что изучили: переменные, функции, списки, файлы и работу с JSON.
Создание небольших проектов — лучший способ научиться программировать. Даже простая программа тренирует мышление разработчика!

Описание проекта

Мы сделаем консольное приложение «Заметки». Оно позволит:
  • добавлять новые заметки;
  • просматривать список всех заметок;
  • удалять ненужные;
  • сохранять их в файл, чтобы не терялись при перезапуске.

Структура проекта

В папке проекта создайте файл notes.py — в нём будет весь код. Также создайте файл notes.json, в котором будут храниться данные.

Начало кода: импорт модулей


import json
import os
Модуль json нужен для сохранения заметок в файл, а os — чтобы проверять, существует ли файл.

Создаём функции

Разобьём логику программы на функции — так код будет аккуратным и удобным для чтения.

Функция загрузки заметок


def load_notes():
    if os.path.exists('notes.json'):
        with open('notes.json', 'r', encoding='utf-8') as f:
            return json.load(f)
    return []
Эта функция проверяет, существует ли файл. Если да — загружает данные, если нет — возвращает пустой список.

Функция сохранения заметок


def save_notes(notes):
    with open('notes.json', 'w', encoding='utf-8') as f:
        json.dump(notes, f, ensure_ascii=False, indent=2)
Она принимает список заметок и сохраняет его в формате JSON.

Добавление новой заметки


def add_note(notes):
    text = input('Введите текст заметки: ')
    notes.append(text)
    save_notes(notes)
    print('Заметка добавлена!')

Просмотр заметок


def show_notes(notes):
    if not notes:
        print('Список заметок пуст.')
    else:
        print('
Ваши заметки:')
        for i, note in enumerate(notes, start=1):
            print(f'{i}. {note}')

Удаление заметки


def delete_note(notes):
    show_notes(notes)
    if not notes:
        return
    num = int(input('Введите номер заметки для удаления: '))
    if 1 <= num <= len(notes):
        deleted = notes.pop(num - 1)
        save_notes(notes)
        print(f'Удалена заметка: {deleted}')
    else:
        print('Некорректный номер!')

Главное меню программы

Теперь создадим бесконечный цикл, который будет показывать меню пользователю.

def main():
    notes = load_notes()
    while True:
        print('
Меню:')
        print('1. Показать все заметки')
        print('2. Добавить заметку')
        print('3. Удалить заметку')
        print('4. Выйти')
        
        choice = input('Выберите действие: ')
        
        if choice == '1':
            show_notes(notes)
        elif choice == '2':
            add_note(notes)
        elif choice == '3':
            delete_note(notes)
        elif choice == '4':
            print('До свидания!')
            break
        else:
            print('Неверный выбор, попробуйте снова.')

if __name__ == '__main__': main()

Результат

Пример работы программы:

Меню:
1. Показать все заметки
2. Добавить заметку
3. Удалить заметку
4. Выйти

Выберите действие: 2 Введите текст заметки: Купить хлеб Заметка добавлена!

Как улучшить проект

Вы можете добавить больше функциональности:
  • Возможность поиска заметок по ключевому слову.
  • Дата и время создания каждой заметки.
  • Редактирование существующих заметок.
  • Сортировка по дате.

Дополнительные идеи мини-проектов

Когда вы разберётесь с этим примером, попробуйте сделать ещё несколько небольших проектов:
  • Калькулятор с функциями add, subtract, multiply, divide.
  • Планировщик дел с датами и отметкой «выполнено».
  • Программа «Список книг», где можно добавлять, искать и удалять книги.

Итоги урока

Теперь вы умеете:
  • Работать с файлами JSON для хранения данных.
  • Создавать функции и передавать в них параметры.
  • Разделять логику на отдельные блоки (функции).
  • Проектировать простые приложения с меню и пользовательским вводом.

Поздравляем! Вы создали свой первый полноценный Python-проект. Далее вы можете развивать его, добавляя графический интерфейс (например, с помощью Tkinter) или превращая в веб-приложение с Flask!