我正在制作一个pygame,我正在尝试添加一个高分功能,但我无法弄清楚如何
我将名称和分数保存到.txt文件中,如下例所示:
christian careaga: 500
c dubb: 400
swag master: 50
在.txt中,每个得分和名称都放在一个新行
上我想把每个分数都分配给它自己的变量
score1 = christian careaga: 500
score2 = c dubb: 400
score3 = swag master: 50
最好的方法是什么?
答案 0 :(得分:2)
不要为文件中的每个分数创建变量,而是使用字典:
with open("scores.txt") as f:
scores = {'score{}'.format(i) : line.strip() for i,line in enumerate(f,1)}
现在访问这样的分数:
>>> scores['score1']
'christian careaga: 500'
>>> scores['score2']
'c dubb: 400'
>>> scores['score3']
'swag master: 50'
按排序顺序获得分数:
>>> for s in sorted(scores.values(), key = lambda x: int(x.split()[-1]),
reverse = True):
print s
...
christian careaga: 500
c dubb: 400
swag master: 50
答案 1 :(得分:1)
为自己保留一些悲伤并使用更易于编写和解析的格式。 json
library无需额外解析即可保存和加载数据:
import json
# write highscores
with open('highscores', 'w') as hscores:
json.dump(my_hiscores_structure, hscores, indent=4)
# load highscores
with open('highscores', 'r') as hscores:
my_hiscores_structure = json.load(hscores)
通过使用indent=4
,您可以编写一个非常易读的结构。