如何在Python上从外部文本文档打印排序列表?

时间:2019-02-21 16:36:06

标签: python list sorting external

我正在做我的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])

但是我不确定从这里去哪里。非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

这只会将前5个得分只写入您的文本文件:

sortedlist = data.sort()
with open("top scores.txt", "a+") as ts:
    ts.write("The top scorers are: ")
    for score in sortedlist[:5]:
        ts.write(score)

答案 1 :(得分:0)

请注意,如果Winners.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()命令。