В этом уроке разберёмся, как сохранять и читать данные в формате JSON — самом популярном способе обмена данными между программами и серверами. Узнаем, как превратить словарь Python в строку JSON и обратно, как записывать его в файл и безопасно загружать оттуда. Научимся работать с русским текстом, вложенными структурами и избегать типичных ошибок. В конце ты сможешь сохранять настройки программы, списки задач или любые другие данные в удобном человекочитаемом виде. Задания идут от простого знакомства с функциями до реальных сценариев чтения-записи файлов с обработкой ошибок.
- Модуль 1: Основы синтаксиса Python
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Арифметические операторы (+, -, *, /).
- Целочисленное деление и остаток (// и %).
- Возведение в степень (**).
- Операторы сравнения.
- Логические операторы (and, or, not).
- Операторы присваивания (=, +=, -=).
- Операторы принадлежности (in, not in).
- Операторы идентичности (is, is not).
- Битовые операторы.
- Тернарный оператор.
- Модуль 4: Ввод и вывод данных
- Модуль 5: Условные конструкции
- Модуль 6: Циклы
- Модуль 7: Строки
- Модуль 8: Списки
- Модуль 9: Кортежи
- Модуль 10: Словари
- Модуль 11: Множества
- Модуль 12: Функции
- Модуль 13: Встроенные функции
- Модуль 14: Работа с файлами
- Модуль 15: Обработка исключений
- Модуль 16: Модули и пакеты
- Модуль 17: ООП - Основы
- Модуль 18: ООП - Продвинутый уровень
- Модуль 19: Декораторы
- Модуль 20: Генераторы и итераторы
- Модуль 21: Регулярные выражения
- Модуль 22: Дата и время
- Модуль 23: Математические операции
- Модуль 24: Работа с сетью
- Модуль 25: Асинхронное программирование
- Модуль 26: Многопоточность
- Модуль 27: Тестирование
- Модуль 28: Базы данных
- Модуль 29: Алгоритмы и структуры данных
- Модуль 30: Продвинутые возможности
1. Подключение модуля json
Чтобы работать с JSON в Python, нужно импортировать встроенный модуль. Заполните пропуск так, чтобы код стал рабочим.
input1S json
data = {"name": "Алексей", "age": 27}
json_string = json.dumps(data, ensure_ascii=False)
print(json_string)2. Сериализация словаря в JSON-строку
Преобразуйте словарь в строку JSON. Заполните пропуски: название функции и нужный параметр, чтобы кириллица отображалась корректно.
import json
person = {"город": "Санкт-Петербург", "возраст": 30}
json_text = json.input1S(person, ensure_ascii=input2S)
print(json_text)3. Найдите и исправьте две ошибки
В коде есть две проблемы: русские буквы превращаются в «кракозябры» и отступ у print нарушен. Исправьте обе строки.
data = {"name": "Мария", "role": "админ"}json_str = json.dumps(data)print(json_str)4. Что выведет код?
Внимательно посмотрите на параметры функции dumps. Выберите правильный результат выполнения.
import json
d = {"продукт": "ноутбук", "цена": 75000}
print(json.dumps(d, ensure_ascii=False, indent=4))5. Десериализация: из строки обратно в объект Python
Заполните пропуски: название функции и имя переменной, куда сохранится результат.
import json
json_string = '{"name": "Ольга", "active": true, "score": 95}'
person = json.input1S(input2S)
print(person["name"])6. Соберите код записи словаря в файл
Перетащите строки в правильном порядке, чтобы сохранить словарь с данными пользователя в файл users.json. Лишние строки есть.
with open("users.json", "w", encoding="utf-8") as f: f.write(json.dumps(user, ensure_ascii=False, indent=4))user = {"login": "anna", "balance": 1200}import jsonprint("Готово!")json.dump(user, f)7. Сопоставьте функции модуля json
Соедините название функции с её назначением.
8. Соберите запись списка задач в файл
Перетащите токены из банка в правильные места, чтобы записать список задач в файл tasks.json с отступами и поддержкой русского языка.
import json
tasks = [
{"task": "купить молоко", "done": False},
{"task": "почитать книгу", "done": True}
]
with open("tasks.json", "w", encoding=input1S) as f:
json.input2S(tasks, f, ensure_ascii=input3S, indent=input4S)9. Исправьте чтение JSON из файла
Программа падает при попытке прочитать файл. Найдите и исправьте две ошибки в коде.
import jsonwith open("config.json") as file: settings = json.loads(file)print(settings["title"])10. Какой будет длина списка после загрузки?
Файл numbers.json содержит список чисел. После выполнения кода сколько элементов будет в переменной data? Введите только число.
import json
with open("numbers.json", encoding="utf-8") as f:
data = json.load(f)
print(len(data))11. Полный цикл: запись → изменение → перезапись
Расставьте строки в правильном порядке, чтобы загрузить данные пользователя, увеличить баланс на 500 и сохранить обратно.
print("Баланс обновлён!")with open("user.json", "w", encoding="utf-8") as f:with open("user.json", encoding="utf-8") as f:user["balance"] += 500 user = json.load(f) json.dump(user, f, ensure_ascii=False, indent=4)import json12. Безопасная загрузка с обработкой ошибок
Добавьте блок try-except, чтобы программа не падала, если файл повреждён или отсутствует. Заполните все пропуски.
import json
try:
with open("settings.json", encoding="utf-8") as f:
config = json.load(f)
except input1S:
print("Файл не найден, используются значения по умолчанию")
except input2S:
print("Файл повреждён, используем стандартные настройки")
else:
print("Настройки загружены успешно")