Здравствуйте. Помогите разобраться, что не так с кодом, вопрос объясню в комментариях кода. Заранее благодарю
# код сравняет набранные очки и сохраняет рекорды в scores.json
def save_high_score(stats, settings, date_now, hour_now):
with open('data/scores.json', 'r') as file:
data = json.load(file)
scores = data['scores'] # список рекордных очков
dates = data['dates'] # список времён когда была зарегистрована рекорд
# для теста
print("loaded score date data:", scores, dates, "len:", len(scores), len(dates))
# список должна быть длины не более 7(установлена в settings.amount_of_score_labels)
if len(scores) >= settings.amount_of_score_labels:
# заработает если список достиг лимита(седьмого индекса)
for index in range(len(scores)):
# сравниваем набранные очки и установленные ранее рекорды
if int(stats.score) == int(scores[index]):
# если уже есть такой рекорд, выйдем из цикла
break
elif int(scores[index])<int(stats.score):
# если есть побитый рекорд, добавляем нового и убираем лишний индекс
dates.insert(index, f"{date_now} - {hour_now}")
scores.insert(index, stats.score)
dates = dates[:7]
scores = scores[:7]
break
elif len(scores)<settings.amount_of_score_labels:
# заработает если список рекордов не достиг лимита(ниже 7)
for index in range(len(scores)):
# если уже есть такой рекорд, выйдем из цикла
if int(stats.score) == int(scores[index]):
break
elif int(scores[index])<int(stats.score):
# добавляем новый рекорд в соответствующем месте
dates.insert(index, f"{date_now} - {hour_now}")
scores.insert(index, stats.score)
break
elif len(scores) == 0:
# заработает только в самом начале записи рекордов
dates.append(f"{date_now} - {hour_now}")
scores.append(stats.score)
print(scores, dates) # для теста
for obj in data:
obj['dates'] = []
# программа вывела ошибку в строке выше, текст ошибки ниже
# TypeError: 'str' object does not support item assignment
# в чем дело? я вроде список дал в значении obj['dates']
obj['scores'] = []
obj['dates'].extend(dates)
obj['scores'].extend(scores)
with open('data/scores.json', 'w') as file:
file.write(data)
file.close()
scores.json
{
"dates": [],
"scores": []
}