为游戏创建排行榜


{"Bob": 50,"Jane": 2,"Sarah": 5, "Amelia": 20}

我有一个像这样的txt文件,我写了一个代码,能够得到不同的球员的名字和分数,将保存到字典从最高到最低。但是每当有新玩家保存他们的名字和分数时,我的TXT文件就会创建一个新的字典,像这样(">

)
{"tie": 0}{"bobby": 0}

")。这是我的代码>

import json
import os
def save_score(score):
filename = 'leaderboard.txt'
player = input('what is your name')
dictionary = {}
if os.path.exists(filename):
with open("leaderboard.txt", "a") as leaderboard:
dictionary[player]=score
json.dump(dictionary,leaderboard)
print("score"+ " " + str(score)+ " "+ "for" + " " +str(player)+ " "+"saved.")
return

我希望能够追加和更新新的球员的名字和得分到现有的字典。如。如果鲍勃玩了,得到5{"鲍勃";: 5},他再玩一次,得到7。而不是为Bob创建一个新字典,它应该将{" Bob ": 5}更新为{" Bob ": 6}。而且,如果新用户玩游戏,他们的名字和分数应该与bob添加到同一个字典中。{"bob" 5}。而不是创建一个新的字典。所以不是这个{"bob": 5} {"tina": 5}。我想要这个{"bob": 5, "tina";: 1}。请问我该如何继续下去呢?提前谢谢。

首先使用json.load从文件中加载分数,然后更改特定玩家的分数,然后使用json.dump将分数保存回文件。

以不同的模式打开文件两次是必要的,以便用新字典覆盖文件中的旧字典,而不是追加到文件中。

with open("leaderboard.txt", "r") as leaderboard:
dictionary = json.load(leaderboard)
dictionary[player] = score
with open("leaderboard.txt", "w") as leaderboard:
json.dump(dictionary,leaderboard)

最新更新