绝对初学者的Python编程 第7章挑战2
我一直在用一本书学习Python,但在这个挑战上卡住了。
“2. 改进这个问答游戏,让它能把高分记录在一个文件里。程序应该记录玩家的名字和分数,如果玩家的分数上榜了,就保存下来。用一种叫做‘pickle’的方式来存储高分。”
我决定用列表而不是字典,因为我觉得我不能对字典里的分数进行排序。不过,按照你的问题,如果要更新字典版本的话,加载字典时给它一个新的变量,然后把这个变量加到原来的字典里。
大概是这样的:
首先,我创建了一个空列表来存放字典。
high_scores = []
然后运行一个单独的程序来更新分数。
new_score = {score: player}
f = open("high_Scores.txt", "rb")
score_list = high_scores
f.close()
score_list.append(new_score)
score_list = score_list[:10]
f = open("high_scores.txt", "wb")
pickle.dump(score_list, f)
f.close()
这个程序只保存10个分数,并会更新字典。我还没弄明白怎么对分数进行排序,读书的时候我觉得在这本书的这个阶段可能做不到。我在考虑换成列表或者其他什么的。我还没真正去做,所以现在不太确定。如果你搞明白了,告诉我一声。
1 个回答
0
我不想把所有事情都替你做,但我可以给你一些提示:
不需要用字典,因为字典是无序的。可以用一个排好序的二元组列表:high_scores = [(score1, name1), (score2, name2), ...]
。把这个列表按从高到低的顺序排序:high_scores.sort(reverse=True)
。使用 list
的 append
和 pop
方法来添加新的记录,或者删除那些不再在前十名的记录。