python - 如何从 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])
但我不知道从这里去哪里。非常感谢帮助!
解决方案
请注意,如果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()
命令。
推荐阅读
- linux - 在 Linux 服务器上运行 selenium 脚本时遇到 Chrome 驱动程序问题
- java - 在 Spring Data JPA 中使用过滤的子元素集合获取父实体列表
- c++ - 为什么空基类会占用空间作为成员变量?
- javascript - 使用 babel 在 IE11 上输出 JS 的问题
- java - 将音频从 ByteBuffer(来自 exoplayer)转换为 float* (IPLFloat32) 并返回以进行处理
- swift - 使用 Firebase 和 Swift 获取与特定用户相关联的帖子
- r - dplyr 更改列名的问题
- javascript - 如何 jQuery Ajax 错误捕获和报告
- aframe - 平面几何的原点 (0, 0) 在哪里
在 A 帧中? - go - 在 Golang 中查找模式的字节偏移量