python 我想做一个保存前5分系统,保存骰子游戏的前5分,并删除以前的2保存.请和谢谢你

k4ymrczo  于 2023-02-07  发布在  Python
关注(0)|答案(1)|浏览(91)
with open('h:\scores.txt', 'a') as f:
    f.write(f"{userr},{p2score}\n")
    f.write(f"{user},{p1score}\n")

我知道这段代码将在一个单独的文本文档中保存两个变量。它将保存用户和玩家1和2的分数。我遇到的麻烦是创建一个前五名的系统,其中前五名的分数也保存在同一个文件中。我还需要它,以便如果游戏再次运行,它将删除前两个保存,并保存两个新的。
我的努力都没有实质性的效果。

ozxc1zmp

ozxc1zmp1#

假设您已经有一个7行的score.txt文件,前2行是最后一场比赛的分数,后5行是排序的5个最佳分数,例如:

Joe,1
Jane,2
Zia,67
Tao,55
Esteban,45
Mendoza,32
Cornelius,12

在某些情况下,您可能需要读取该文件:

with open('scores.txt') as f:
    p1, p2, *top5 = f.readlines()
# removing the endlines from the scores
top5 = [score.strip() for score in top5]

游戏结束后,您将获得新的分数,例如:

userr, user = 'player 2', 'player 1'
p2score, p1score = 48, 20

您需要更新前5名;有许多方法可以做到这一点;您可以将新分数添加到top5列表中,按分数降序排序,然后保留前5个条目:

new_score1 = f"{user},{p1score}"
new_score2 = f"{userr},{p2score}"
top5 += [new_score1, new_score2]
top5.sort(key = lambda s: -int(s.split(',')[-1]))
top5 = top5[:5]

print(top5)
# ['Zia, 67', 'Tao, 55', 'player 2,48', 'Esteban, 45', 'Mendoza, 32']

最后,更新scores.txt

with open('scores.txt', 'w') as f:
    f.write(f"{new_score2}\n")
    f.write(f"{new_score1}\n")
    for score in top5:
        f.write(f"{score}\n")

现在您所要做的就是将这些代码片段放在游戏代码中的相关位置。

相关问题