From 14a7267ddc7bd58e07c0e0c803aec01a8c510554 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D0=B8=D1=8F=20=D0=91=D0=B5=D1=80=D0=B4?= =?UTF-8?q?=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2=D0=B0?= Date: Wed, 27 May 2026 08:41:08 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=BA=D1=82=D0=B8=D1=87?= =?UTF-8?q?=D0=B5=D1=81=D0=BA=D0=BE=D0=B5=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=E2=84=963:=20=D0=9F=D0=B0=D0=BC=D1=8F=D1=82?= =?UTF-8?q?=D1=8C=20=D0=B8=20=D0=BF=D0=BE=D0=B4=D1=82=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D0=B6=D0=B4=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B4=D0=B5=D0=B9=D1=81?= =?UTF-8?q?=D1=82=D0=B2=D0=B8=D0=B9:=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../README.md | 183 ++++++++++-------- 1 file changed, 100 insertions(+), 83 deletions(-) diff --git a/solutions/69a474cdc46fd26feae69896_Практическое_задание__3__Память_и_подтве/README.md b/solutions/69a474cdc46fd26feae69896_Практическое_задание__3__Память_и_подтве/README.md index 28a5bfa..a9ba232 100644 --- a/solutions/69a474cdc46fd26feae69896_Практическое_задание__3__Память_и_подтве/README.md +++ b/solutions/69a474cdc46fd26feae69896_Практическое_задание__3__Память_и_подтве/README.md @@ -1,112 +1,129 @@ -# Практическое задание №3: Память и подтверждение действий +# Практическое задание №3 +**Память и подтверждение действий** + +--- ## Описание -В этом проекте реализована простая консольная игра «Память». -Игра состоит из двух режимов: -1. **Классический** – игроку показывается последовательность случайных символов, после чего он должен её воспроизвести. -2. **С подтверждением действий** – каждый ввод пользователя проверяется и при ошибке выводится сообщение об ошибке. +В этом проекте реализована простая консольная утилита, которая демонстрирует работу с памятью (сохранение данных в файл) и подтверждением пользовательских действий. -Для улучшения визуального восприятия использована библиотека `rich`, которая позволяет красиво форматировать текст в терминале (цвета, таблицы, индикаторы прогресса). +Основные возможности: + +- **Сохранение** введённых пользователем строк в JSON‑файл. +- **Загрузка** ранее сохранённого списка строк при запуске программы. +- **Подтверждение** удаления элемента из памяти через диалог «Да/Нет». +- Красивый вывод сообщений и таблиц с помощью библиотеки `rich`. + +--- ## Структура проекта + ``` -memory_game/ -├── main.py # точка входа – запускает игру -├── game.py # логика игры и вспомогательные функции -└── requirements.txt +memory_confirm/ +├── data.json # Хранилище (создаётся при первом запуске) +├── main.py # Точка входа +└── utils.py # Вспомогательные функции ``` +- **`main.py`** – основной скрипт, который запускает CLI‑интерфейс. +- **`utils.py`** – содержит функции для чтения/записи JSON и подтверждения действий. + +--- + ## Установка зависимостей ```bash -# Клонируйте репозиторий (если ещё не сделали это) -git clone https://github.com/your-username/memory_game.git -cd memory_game - # Создайте виртуальное окружение (рекомендуется) python -m venv .venv -source .venv/bin/activate # Windows: .\.venv\Scripts\activate +source .venv/bin/activate # Windows: .venv\Scripts\activate -# Установите зависимости из файла requirements.txt +# Установите зависимости из requirements.txt pip install -r requirements.txt ``` -`requirements.txt` содержит только одну строку: +`requirements.txt` содержит: ```text rich>=13.0.0 ``` -## Запуск программы - -### 1. Классический режим +Если файла `requirements.txt` нет, установите вручную: ```bash -python main.py classic -``` - -Игра начнётся с простого режима «памяти». В терминале будет показана последовательность символов, затем вы будете приглашены ввести её. - -### 2. Режим подтверждения действий - -```bash -python main.py confirm -``` - -В этом режиме после каждого ввода проверяется правильность и при ошибке выводится красное сообщение об ошибке. - -### 3. Помощь - -```bash -python main.py --help -``` - -Выводит краткое описание доступных команд. - -## Пример использования - -```text -$ python main.py classic -Добро пожаловать в игру «Память»! -Введите 'y' для начала, 'q' чтобы выйти: y - -Секвенция: - A B C D E F G H I J K L M N O P Q R S T U V W X Y Z - -Ваша задача — воспроизвести эту последовательность. -Введите строку (разделяйте символы пробелом): -``` - -Если пользователь вводит правильную последовательность, выводится: - -```text -✅ Поздравляем! Вы успешно запомнили всю последовательность! -``` - -При ошибке в режиме подтверждения: - -```text -❌ Ошибка: ожидается 'C', но получено 'D'. -Попробуйте ещё раз. -``` - -## Как добавить новые режимы - -1. Создайте новый файл `game_modes/.py`. -2. Реализуйте класс `GameMode` с методами: - - `start(self)`: запускает игру - - `process_input(self, user_input: str) -> bool`: обрабатывает ввод и возвращает `True`, если игра продолжается. -3. Зарегистрируйте новый режим в `main.py`. - -## Тесты - -Для проверки корректности работы можно использовать модульные тесты (если добавлены). Запуск: - -```bash -pytest tests/ +pip install rich ``` --- -Если возникли вопросы, обращайтесь к авторам проекта или открывайте issue на GitHub. \ No newline at end of file +## Запуск программы + +### 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. +--- \ No newline at end of file