python - 我如何制作代码来保存这个猜数字游戏的前 5 名分数?
问题描述
from random import *
tries = 0
guessNum = randint(1,1000)
while True:
guess = int(input("Guess a number between 1-1000: "))
print("You have",29-tries,"tries left.")
if guess >= guessNum+1:
print("Too high")
tries += 1
elif guess <= guessNum-1:
print("Too low")
tries += 1
if guess == guessNum:
print("You got it right!!")
tries += 1
print("It took you",tries,"tries.")
f = open("scoreBoard.txt","a")
f.write("%-s,%-s\n" %(tries,guessNum))
f.close()
break
if tries == 30:
print("You failed, the number was:",guessNum,".")
break
我需要帮助将其放入记分牌中,如果有新的高分,记分牌会更新。我知道如何将这些内容附加到 txt 文件中,但我应该如何对其进行编码以使其只有前五名的分数?
解决方案
您首先要将分数存入内存。你可以很容易地用一个列表来做到这一点。
highscores = [0]*5
现在,当您获得新分数时,您希望将其放入列表中的正确位置。假设列表中的第一项是最低的,最后一项是最高的。现在我们可以编写一个函数,将高分附加到列表中,对其进行排序,然后返回 5 个最高分。
def place_highscores(score: int, highscore_list: list):
size = len(highscore_list)
highscore_list.append(score)
highscore_list.sort()
highscore_list = highscore_list[-size:]
return highscore_list
现在,您可以通过调用此函数简单地将新的高分放入记分板:
>>>highscores = [1, 2, 3, 5, 5]
>>>highscores = place_highscores(4, highscores)
>>>print(highscores)
[2, 3, 4, 5, 5]
一旦您想保存数据,您可以将其写入文件。您可以直接以您自己的格式执行此操作,您可以使用 pickle 或 json,我更喜欢它,因为该扩展程序带有 python 并且非常易于使用:
import json
dict = {
"highscores": highscores
}
with open("path/to/file", w) as file:
json.dump(dict, file, indent=4)
这是 json 的一些文档:https ://www.geeksforgeeks.org/json-dump-in-python/
推荐阅读
- php - Woocommerce 根据商品数量设置固定购物车价格
- apache-spark - 火花重新分配不均匀,仍然偏斜
- json - 在 Dataweave 中合并 JSON 有效负载的问题
- function - Node js调用异步函数调用
- javascript - 如何在使用 PHP 插入数据库之前检查任何输入值是否有数据?
- c++ - 在 C++ 中使用移动语义的正确方法是什么?
- javascript - 如何从 datetimepicker 验证日期
- templates - 基础响应式粘性菜单typo3 hmenu
- angular - 在 Angular 中从模板中引用属性或 getter 的性能
- shell - 从一个容器 ping 多个 docker 容器,而不进入容器内部