这是我的代码:
Top_5 = []
with open (("winscorefile.txt"),"r") as Top5_File:
for number in Top5_File:
Top_5.append(number)
Top_5.sort()
Top_5.reverse()
number_of_items = len(Top_5)
while number_of_items > 5:
Top_5.pop()
number_of_items = len(Top_5)
for data in Top_5:
print(data)
我的文本文件看起来像(它是分数和用户名的集合):
62 rob
100 rob
56 ROB
54 rob
76 bor
64 bor
52 a
44 p1
54 p1
46 p2
74 p1
52 p2
66 p2
76 p2
38 p2
60 p1
58 p1
我的文件旨在输出前 5 个最高分数。它正在这样做,但只输出最高的两位数字。我不知道为什么它忽略了 100 分。
最佳答案
您可以在空格上拆分单行并将第一部分转换为 int。
然后您可以将号码和人员作为元组添加到您的列表中:
Top_5 = []
Top5_File = """
62 rob
100 rob
56 ROB
54 rob
76 bor
64 bor
52 a
44 p1
54 p1
46 p2
74 p1
52 p2
66 p2
76 p2
38 p2
60 p1
58 p1
""".strip().split("\n")
for number in Top5_File:
number, person = number.strip().split(" ")
Top_5.append((int(number), person))
# sort only once, outside the loop!
Top_5.sort(reverse=True)
number_of_items = len(Top_5)
while number_of_items > 5:
Top_5.pop()
number_of_items = len(Top_5)
for data in Top_5:
print(data)
输出:
(100, 'rob')
(76, 'bor')
(76, 'p2')
(74, 'p1')
(66, 'p2')
如果你不需要元组,你可以使用:
for number in Top5_File:
Top_5.append(number.strip())
Top_5.sort(key=lambda x: int(x.split(" ")[0]), reverse=True)
number_of_items = len(Top_5)
while number_of_items > 5:
Top_5.pop()
number_of_items = len(Top_5)
for data in Top_5:
print(data)
输出:
100 rob
76 bor
76 p2
74 p1
66 p2
关于python - 为什么我的代码无法从 txt 文件中读取 3 位数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52891484/