我正在做我的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])
但是我不确定从这里去哪里。非常感谢您的帮助!
答案 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()
命令。