首页 > 解决方案 > 如何从 Python 上的外部文本文档打印排序列表?

问题描述

我正在做我的 GCSE 计算机科学编程项目,想知道是否可以得到一些帮助。我有代码可以在外部文档上打印出骰子游戏中不同玩家的分数,以及玩家实现了什么:

total1 = str(total1)
total2 = str(total2)
if total2 > total1:
    file = open("winners.txt", "a")
    winner = "Player2"
    file.write("\n" + winner + ", " + total2)

if total1 > total2:
    file = open("winners.txt", "a")
    winner = "Player1"
    file.write("\n" + winner + ", " + total1)

然而,该项目要求对该列表进行排序,并将排序后的列表(仅显示前五个分数)放入外部文本文档中。我有这个代码:

FileName = ("winners.txt")
data=(FileName).readLines()
sortedlist = data.sort()
file = open("top scores.txt", "a+")
file.write("The top scores are: " + "\n")
file.write(sortedlist[0])
file.write(sortedlist[1])
file.write(sortedlist[2])
file.write(sortedlist[3])
file.write(sortedlist[4])

但我不知道从这里去哪里。非常感谢帮助!

标签: pythonlistsortingexternal

解决方案


请注意,如果winers.txt 的每一行都以球员姓名而不是比分开头,那么排序列表将按球员姓名而非比分排序。但是如果你有一个“player_name, score”形式的字符串列表,你可以这样做来制作一个按最高到最低分数排序的分数列表:

>>> scores = ['Player1, 80', 'Player1, 90', 'Player2, 70', 'Player2, 100']
>>> splitscores = [s.split(', ') for s in scores]
>>> numscores = [ (int(s[1]), s[0]) for s in splitscores ]
>>> numscores.sort(reverse=True)
>>> numscores
[(100, 'Player2'), (90, 'Player1'), (80, 'Player1'), (70, 'Player2')]

使用这种方法,您应该能够将所有分数放入一个列表中,然后获取前 5 个分数的分数值和获胜者姓名。

顺便说一句,您可能希望file.close()在代码中包含一些语句来完成这些open()命令。


推荐阅读