Работа с JSON

Тренажер по Python для пользователей с начальным уровнем подготовки.

Тренажер по Python

В этом уроке разберёмся, как сохранять и читать данные в формате JSON — самом популярном способе обмена данными между программами и серверами. Узнаем, как превратить словарь Python в строку JSON и обратно, как записывать его в файл и безопасно загружать оттуда. Научимся работать с русским текстом, вложенными структурами и избегать типичных ошибок. В конце ты сможешь сохранять настройки программы, списки задач или любые другие данные в удобном человекочитаемом виде. Задания идут от простого знакомства с функциями до реальных сценариев чтения-записи файлов с обработкой ошибок.

Список тем

1. Подключение модуля json

id: 40064_task1

Чтобы работать с JSON в Python, нужно импортировать встроенный модуль. Заполните пропуск так, чтобы код стал рабочим.

Заполните пропуски
input1S json

data = {"name": "Алексей", "age": 27}
json_string = json.dumps(data, ensure_ascii=False)
print(json_string)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

2. Сериализация словаря в JSON-строку

id: 40064_task2

Преобразуйте словарь в строку JSON. Заполните пропуски: название функции и нужный параметр, чтобы кириллица отображалась корректно.

Заполните пропуски
import json

person = {"город": "Санкт-Петербург", "возраст": 30}

json_text = json.input1S(person, ensure_ascii=input2S)
print(json_text)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

3. Найдите и исправьте две ошибки

id: 40064_task3

В коде есть две проблемы: русские буквы превращаются в «кракозябры» и отступ у print нарушен. Исправьте обе строки.

Найдите ошибку и исправьте
data = {"name": "Мария", "role": "админ"}
json_str = json.dumps(data)
print(json_str)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

4. Что выведет код?

id: 40064_task4

Внимательно посмотрите на параметры функции dumps. Выберите правильный результат выполнения.

Выберите правильный вариант ответа
import json
d = {"продукт": "ноутбук", "цена": 75000}
print(json.dumps(d, ensure_ascii=False, indent=4))
Сообщения
Проверить
Показать подсказку

5. Десериализация: из строки обратно в объект Python

id: 40064_task5

Заполните пропуски: название функции и имя переменной, куда сохранится результат.

Заполните пропуски
import json

json_string = '{"name": "Ольга", "active": true, "score": 95}'

person = json.input1S(input2S)
print(person["name"])
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

6. Соберите код записи словаря в файл

id: 40064_task6

Перетащите строки в правильном порядке, чтобы сохранить словарь с данными пользователя в файл 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 json
print("Готово!")
json.dump(user, f)
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

7. Сопоставьте функции модуля json

id: 40064_task7

Соедините название функции с её назначением.

Сопоставьте строки в правой(нижней) части с соответствующими строками в левой(верхней) по порядковому номеру
Преобразует Python-объект в JSON-строку
Записывает Python-объект прямо в файловый объект
Читает JSON из строки и возвращает Python-объект
Читает JSON из файла и возвращает Python-объект
load
dump
dumps
loads
Сообщения
Проверить
Показать подсказку

8. Соберите запись списка задач в файл

id: 40064_task8

Перетащите токены из банка в правильные места, чтобы записать список задач в файл 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)
"utf-8"
dump
False
2
load
"w"
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

9. Исправьте чтение JSON из файла

id: 40064_task9

Программа падает при попытке прочитать файл. Найдите и исправьте две ошибки в коде.

Найдите ошибку и исправьте
import json
with open("config.json") as file:
    settings = json.loads(file)
print(settings["title"])
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

10. Какой будет длина списка после загрузки?

id: 40064_task10

Файл numbers.json содержит список чисел. После выполнения кода сколько элементов будет в переменной data? Введите только число.

Что должно получиться?
import json
with open("numbers.json", encoding="utf-8") as f:
    data = json.load(f)
print(len(data))
Сообщения
Проверить
Показать подсказку

11. Полный цикл: запись → изменение → перезапись

id: 40064_task11

Расставьте строки в правильном порядке, чтобы загрузить данные пользователя, увеличить баланс на 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 json
Сообщения
Проверить
Показать подсказку

12. Безопасная загрузка с обработкой ошибок

id: 40064_task12

Добавьте блок 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("Настройки загружены успешно")
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Python: запуск кода в браузере

id: 40064_compiler
🐍
Запустить тренажёр (Python)
НайтиКурс.Ру