在 Python 中对文件中的分数进行排序

这是使用该文件的部分:


file = open('Dice Game.txt', 'a')

file.write(winner + '\n')

file.close()

file = open('Dice Game.txt', 'r')

for line in file:

    name = line.strip()

    print(name)

file.close()

我知道打印乐谱的部分非常笨重,但这似乎是我让它正确打印的唯一方法。


我已经尝试了很多我在网上找到的不同解决方案,但没有一个解决方案按降序对文件进行数字排序(并打印前 5 个分数),它们似乎都给出了错误(当尝试使用sort和sorted)。


变量获胜者如果定义为:


winner = str(score) + '=' + str(username)

我想弄清楚我应该如何更改该变量或如何按原样对其进行排序。


凤凰求蛊
浏览 197回答 3
3回答

犯罪嫌疑人X

要简单地附加一个条目,您不需要打开文件两次,因为您可以在r+模式下打开。这将让你阅读和写作。rmode 将文件指针放在文件的开头而不是结尾。当你打开文件时,你应该使用一个with语句来自动关闭文件,即使发生错误:with open('Dice Game.txt', 'r+') as file:    data = [line.strip() for line in file]    print(winner, file=file)data.append(winner)赋值给的理解将data文件指针移到最后。然后print语句写到最后。对数据进行排序是完全独立的蠕虫。您必须拆分数据并按分数的数值进行排序。然后你将不得不重写整个文件。虽然您可以通过一次打开来完成此操作,但在您的原始示例中打开两次可能会更容易:fname = 'Dice Game.txt'with open(fname, 'r') as file:    data = [int(score), name.rstrip() for score, name in (line.split('=', 1) for line in file)]data.sort()with open(fname, 'w') as file:    file.writelines(f'{score}={name}\n' for score, name in data)

慕婉清6462132

让我们存储文件中的内容。lines = []for line in file:    winner = line.strip()  # something like '30=Jim'    score, name = winner.split('=')  # => '30', 'Jim'    # now store that information for later    lines.append((int(score), name))  # we're putting (30, 'Jim') in lines# lines contains [(30, 'Jim'), (20, 'Amy'), (60, 'Susan'), ...]print(lines)您现在可以使用您在网上找到的一种方法进行排序lines吗?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python