# Практическое задание №3 **Память и подтверждение действий** --- ## Описание В этом проекте реализована простая консольная утилита, которая демонстрирует работу с памятью (сохранение данных в файл) и подтверждением пользовательских действий. Основные возможности: - **Сохранение** введённых пользователем строк в JSON‑файл. - **Загрузка** ранее сохранённого списка строк при запуске программы. - **Подтверждение** удаления элемента из памяти через диалог «Да/Нет». - Красивый вывод сообщений и таблиц с помощью библиотеки `rich`. --- ## Структура проекта ``` memory_confirm/ ├── data.json # Хранилище (создаётся при первом запуске) ├── main.py # Точка входа └── utils.py # Вспомогательные функции ``` - **`main.py`** – основной скрипт, который запускает CLI‑интерфейс. - **`utils.py`** – содержит функции для чтения/записи JSON и подтверждения действий. --- ## Установка зависимостей ```bash # Создайте виртуальное окружение (рекомендуется) python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate # Установите зависимости из requirements.txt pip install -r requirements.txt ``` `requirements.txt` содержит: ```text rich>=13.0.0 ``` Если файла `requirements.txt` нет, установите вручную: ```bash pip install rich ``` --- ## Запуск программы ### 1. Через команду ```bash python main.py ``` После запуска вы увидите меню: ``` === Меню === 1. Добавить строку 2. Показать все строки 3. Удалить строку 4. Выход Выберите действие: ``` ### 2. Пример использования ```text > python main.py === Меню === 1. Добавить строку 2. Показать все строки 3. Удалить строку 4. Выход Выберите действие: 1 Введите строку для сохранения: Hello, world! ✅ Строка успешно добавлена. === Меню === ... ``` #### Удаление ```text > python main.py ... (выбираем пункт 3) Введите номер строки для удаления: 2 Вы уверены, что хотите удалить строку "Пример"? [y/N]: y ✅ Строка удалена. ``` --- ## Как это работает - **`utils.load_data()`** читает `data.json`. Если файл отсутствует – создаётся пустой список. - **`utils.save_data(data)`** сохраняет список в JSON‑файл с отступом 4 пробела. - **`utils.confirm(prompt)`** выводит запрос через `rich.prompt.Prompt.ask`, ожидая ответа `y/n`. --- ## Тесты Для проверки корректности работы можно запустить: ```bash python -m unittest discover tests ``` (Если тестовые файлы находятся в каталоге `tests/`.) --- ## Лицензия MIT © 2026. ---