КОНСПЕКТ ПРЕПОДАВАТЕЛЯ · C20

Запись файлов и JSON

Формат и цель

Практику с файлами, окружением, модулями и pytest проверяем в локальной папке проекта. Браузерный редактор подходит для отдельных фрагментов логики. Консольная программа на Python. Ученик пишет код, запускает его и проверяет текстовый результат. На занятие можно отвести 45–60 минут; темп меняется по опыту группы.

Чтобы данные пережили закрытие программы, их нужно записать. Разберём текстовый файл и JSON: как сохранить список записей, прочитать его обратно и проверить сохранённую структуру.

Подготовка и демонстрация

Открой урок и заранее запусти пример в браузере. Для локального проекта подготовь Python 3 и редактор. Покажи входные данные и ожидаемый вывод, затем измени один параметр и попроси предсказать результат.

Порядок занятия

  1. 5 минут: покажи итог «Мини-блокнот в JSON» и обсуди, какие данные нужны программе.
  2. 15 минут: разбери блоки теории, после каждого попроси объяснить одну строку своими словами.
  3. 15 минут: самостоятельные задачи во вкладке «Задачи», затем сравнение подходов.
  4. 15–20 минут: мини-проект, проверка обычных и граничных случаев.
  5. 5 минут: сохранение main.py и README, короткая демонстрация решения.

Учебные темы

  • 1. Запись заменяет содержимое
  • 2. JSON — текстовый формат обмена
  • 3. Сохранение и загрузка файла
  • 4. Дата, имя файла и схема записи

Вопрос группе

Чем отличаются json.dumps и json.loads?

Ориентир для обсуждения

dumps превращает данные Python в JSON-строку, loads восстанавливает данные из JSON-строки.

Типичные трудности

  • Случайно стереть файл режимом w.
  • Использовать eval для чтения JSON вместо json.loads.
  • Считать успешный разбор JSON проверкой нужных полей.

Критерии готового проекта

Локальный блокнот сохраняет заметки, время создания и отметку выполнения.

  • Русский текст восстанавливается без искажений.
  • После повторного запуска список не теряется.
  • Изменение done сохраняется как логическое значение.

Проси показать результат и объяснить ключевое решение. Совпадение одного примера вывода не заменяет проверку остальных случаев.

Задание мини-проекта и пример результата →