文件不是列表。您不能在不倒退文件对象的情况下循环播放它们,因为完成阅读后文件位置不会重置为开始。
您可以results_f.seek(0)
在循环之间添加:
for each_line in results_f:
(name,score) = each_line.split()
scores.append(float(score))
results_f.seek(0)
for line in results_f:
(name,score) = line.split()
surfers.append(name)
但你会 多 由不循环两次更好。您已经name
在第一个循环中获得了信息。只需循环 一次 :
for each_line in results_f:
(name,score) = each_line.split()
scores.append(float(score))
surfers.append(name)
您的代码仅对scores
列表进行排序;该surfers
列表将不符合要求。如果您需要将姓名和分数排序在一起,请将姓名和分数放在列表中;如果您将分数放在第一位,您甚至不需要讲sort
任何特别的事情:
surfer_scores = []
for each_line in results_f:
name, score = each_line.split()
surfer_scores.append((float(score), name))
surfer_scores.sort(reverse=True)
print("The high scores are : ")
for i, (score, name) in enumerate(surfer_scores[:3], 1):
print("{} - {}: {}".format(i, name, score)