相关背景资料
我正在用Python开发游戏& Pygame为我的高中计算机科学决赛。我完成了所有这些。它是一个僵尸射击游戏,玩家以某个分数和他们的名字结束。我将分数保存到文本文件中。每增加一个新分数,它应该在新行中看起来像这样:
罗纳德3680Ronald是名字,3680是得分,在名称和得分之间是一个奇异的空间。
我想做的事
如何组织和重新排列文本文件中从最高(最高)到最低(最低)的所有分数。
我不需要帮助
这样我就可以获得高分状态,玩家可以在其中查看本地保存文件中的最高分数。
加成
我尝试将答案应用于其他类似的问题但是我不知道的很多东西,我甚至不理解它是如何工作的。所以我正在诉诸一个问题。
抱歉,我忘记了。使用Python 2.7
答案 0 :(得分:1)
首先阅读文件:
with open('filename', 'r') as file:
highscore = [line.strip().rsplit(' ', 1) for line in file if line.strip()]
这将打开文件,然后创建一个包含所有非空(if line
)行的列表,然后删除每行开头和结尾的空格并将其拆分到最右边的空白处(只有这样的播放器名称)空格不分裂。)
然后你需要(反向)按第二个元素(得分)排序高分:
from operator import itemgetter
sorted_highscore = sorted(highscore, reverse=True, key=lambda x: int(x[1]))
最后再将该文件写入文件:
with open('outfilename', 'w') as file:
file.write('\n'.join(['{} {}'.format(name, score) for name, score in sorted_highscore]))
答案 1 :(得分:0)
最简单的方法是将现有文件加载到数据结构中:
scores = []
if os.path.exists(filename):
with open(filename) as scorefile:
for line in scorefile:
scores.append(line.rsplit(maxsplit=1))
现在你有一个(名称,分数)元组列表。添加新的:
scores.append(("Your Name", 9923))
然后对整个事情进行排序:
scores.sort(reverse=True, key=lambda name, score: score)
现在将其写回文件。