Решение задачи
# Задача 2: Поиск и изменение данных в JSON Описание: Напишите программу, которая: 1. Считывает файл tokens.json, содержащий информацию о (например, name, price). 2. Позволяет пользователю изменить price по его name. 3. Обновляет файл tokens.json с новыми
- Программирование
Условие:
# Задача 2: Поиск и изменение данных в JSON
Описание: Напишите программу, которая:
1. Считывает файл tokens.json, содержащий информацию о (например, name, price).
2. Позволяет пользователю изменить price по его name.
3. Обновляет файл tokens.json с новыми значениями и форматирует JSON с отступами.
def readtokensjson():
try:
with open("tokens.json", "r", encoding="utf-8") as file:
tokens = json.load(file)
except FileNotFoundError:
tokens = []
token = input("Введите название токена: ")
while True:
try:
balance = int(input("Введите новый баланс: "))
break
except ValueError:
print("Баланс должен быть числом. Попробуйте снова.")
newtoken = {
"token": token,
"balance": balance
}
tokens.append(newtoken)
with open("tokens.json", "w", encoding="utf-8") as file:
json.dump(tokens, file, indent=4, ensureascii=False) # Это нагуглила, когда вводила кириллицей ответы
readtokensjson()
Решение:
Ниже приводится один из возможных вариантов решения задачи с подробными комментариями и пошаго...
import json def loadokens(filename=tokens.json): Функция загружает данные из файла tokens.json. Если файла не существует, возвращается пустой список. try: with open(filename, r, encoding=utf-8) as file: tokens = json.load(file) except FileNotFoundError: tokens = [] return tokens def saveokens(tokens, filename=tokens.json): Функция сохраняет данные tokens в файл tokens.json с отступами. with open(filename, w, encoding=utf-8) as file: json.dump(tokens, file, indent=4, ensurescii=False) def updateprice(tokens): Функция запрашивает у пользователя название токена и новый price, затем ищет токен по name и обновляет его price, если такой токен найден. Если токена с заданным именем не существует, выводится сообщение. tokename = input(Введите название токена для обновления цены: ) # Флаг для проверки, найден ли токен found = False # Проходим по всем токенам for token in tokens: if token.get(name) == tokename: # Если нашли нужный токен, запрашиваем новый price while True: try: newrice = float(input(Введите новое значение price: )) break except ValueError: print(Цена должна быть числом. Попробуйте снова.) token[price] = newrice found = True print(fЦена токена {tokename} успешно обновлена.) break if not found: print(fТокен с названием {tokename} не найден.) def main(): # Шаг 1: ЗАГРУЗКА данных из файла tokens.json tokens = loadokens() # Если список пуст, сообщаем пользователю и предлагаем добавить новый токен if not tokens: print(Файл tokens.json не найден или он пуст. Добавьте новый токен.) tokename = input(Введите название токена: ) while True: try: price = float(input(Введите значение price: )) break except ValueError: print(Цена должна быть числом. Попробуйте снова.) newoken = { name: tokename, price: price } tokens.append(newoken) print(Новый токен добавлен.) # Шаг 2: Изменение данных – поиск токена по name и обновление его price updateprice(tokens) # Шаг 3: Сохранение обновленного списка токенов в файл tokens.json с отступами saveokens(tokens) print(Файл tokens.json успешно обновлен.) if == : main() -------------------------------------------------- ──────────────────────────── Пошаговое объяснение решения: 1. Импорт модуля json: Мы используем модуль json для чтения и записи данных в формате JSON. 2. Функция loadokens(): • Пытаемся открыть файл tokens.json для чтения. • Если файл открыт успешно, данные загружаются с помощью json.load() и возвращаются. • Если файл не найден (FileNotFoundError), возвращается пустой список tokens. 3. Функция saveokens(): • Принимает обновлённый список токенов и сохраняет его в файл tokens.json. • Для сохранения используется json.dump() с параметрами indent=4 (для отступов) и ensurescii=False, чтобы корректно сохранялись кириллические символы. 4. Функция updateprice(): • Запрашивает у пользователя ввести название токена, для которого требуется изменить цену. • Перебирает элементы списка tokens, каждый из которых является словарем. • Если в токене ключ name совпадает с введенным значением, запрашивает новый price. • Проводится проверка введённого значения на возможность преобразования в число (float). При неверном вводе пользователю предлагается повторить ввод. • После успешного ввода новое значение записывается в токен под ключом price. • Если токен не найден, выводится соответствующее сообщение. 5. Функция main(): • Вызывается функция loadokens() для загрузки данных из файла. • Если список токенов пуст (что может означать, что файл не существует или пустой), пользователю предлагается добавить новый токен. • Затем вызывается функция updateprice() для изменения цены у выбранного токена. • После изменения данных вызывается функция saveokens(), которая записывает обновленные данные обратно в файл tokens.json с красивым форматированием. • Выводится сообщение об успешном обновлении файла. 6. Блок if == : • Обеспечивает запуск функции main() при выполнении скрипта напрямую, что является стандартной практикой в Python. Таким образом, программа выполняет условие задачи: читает JSON-файл, позволяет пользователю изменить значение price по названию токена и сохраняет обновленный файл в отформатированном виде.Похожие задачи
Не нашел нужную задачу?
Воспользуйся поиском
Выбери предмет
S
А
Б
В
Г
И
К
М
П
- Правоохранительные органы
- Пожарная безопасность
- Парикмахерское искусство
- Природообустройство и водопользование
- Почвоведение
- Приборостроение и оптотехника
- Промышленный маркетинг и менеджмент
- Производственный маркетинг и менеджмент
- Процессы и аппараты
- Программирование
- Право и юриспруденция
- Психология
- Политология
- Педагогика
Р
С
Т
- Трудовое право
- Теория государства и права (ТГП)
- Таможенное право
- Теория игр
- Текстильная промышленность
- Теория вероятностей
- Теоретическая механика
- Теория управления
- Технология продовольственных продуктов и товаров
- Технологические машины и оборудование
- Теплоэнергетика и теплотехника
- Туризм
- Товароведение
- Таможенное дело
- Торговое дело
- Теория машин и механизмов
- Транспортные средства
Ф
Э