← маршрут 1–48 · личный кабинет
Занятие 42. JSON: загрузка
Перед началом
Что открыть: Открой рабочую версию проекта после занятия 41. Демонстрационный lesson-42.py используй как отдельный маленький пример.
Исходные данные: Начни с значений из минимального примера. Творческие изменения выполняй только после базовой проверки.
Что нужно понять
Занятие 42 посвящено теме «JSON: загрузка». Здесь этот навык применяется не как отдельное упражнение, а как часть общей текстовой RPG. json.load возвращает обычный словарь. После чтения его поля можно использовать для создания нового Hero и тем самым восстановить объект. Отсутствующий файл обрабатывается отдельно через FileNotFoundError.
Минимальный пример
import json
class Hero:
def __init__(self,name,hp,coins,inventory):
self.name=name; self.hp=hp; self.coins=coins; self.inventory=inventory
try:
with open("save.json",encoding="utf-8") as f: state=json.load(f)
except FileNotFoundError:
state={"name":"Новый герой","hp":10,"coins":0,"inventory":[]}
hero=Hero(state["name"],state["hp"],state["coins"],state["inventory"])
print(hero.name,hero.hp,hero.coins,hero.inventory)Скачать демонстрационный .py-файл
Практика
Если save.json существует, загрузи state и создай Hero из state['name'], state['hp'], state['coins'], state['inventory']. Если файла нет, создай точное стартовое состояние Новый герой/10/0/пустой inventory.
Связь с проектом: После базового упражнения перенеси изученный приём в рабочую версию проекта и сохрани версию после занятия 42.
Критерий проверки
После файла занятия 41 восстанавливаются Лея/8/4/['карта','ключ']; без файла создаётся Новый герой/10/0/[].
Как проверить: Сценарий A — файл есть. Сценарий B — файл удалён/отсутствует.
Что сдать
Сдай рабочую версию проекта после занятия 42 и короткий протокол проверки: входные данные → ожидалось → получилось.
Если нужна поддержка: Если задача не запускается целиком, выполни один шаг отдельно и объясни, что должно измениться до следующего шага.
Типичное затруднение
Не выполняй содержимое файла как код и не предполагай, что файл всегда существует.
Домашняя часть
Добавь пункт «новая игра» или «продолжить» в свой сценарий загрузки.
После базы: Проверь поведение на временно переименованном файле сохранения.
Если появилась ошибка
Traceback — сообщение Python об ошибке. Сначала прочитай его последнюю строку и найди номер строки своего файла. Повтори только тот маленький шаг, на котором возникла ошибка; после исправления снова запусти тот же проверочный случай. Если используешь ИИ, сохрани собственную попытку и попроси одну подсказку, а не готовое решение.