1. Главная
  2. Библиотека
  3. Программирование
  4. # Задача 2: Поиск и изменение данных в JSON Описание: Н...
Решение задачи

# Задача 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 по названию токена и сохраняет обновленный файл в отформатированном виде.

Не нашел нужную задачу?

Воспользуйся поиском

Выбери предмет