文件不是列表。您无法在不倒回文件对象的情况下循环它们,因为当您完成读取时,文件位置不会重置为开始位置。
你可以添加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)
但你会much最好不要循环两次。你已经拥有了name
第一个循环中的信息。只是循环once:
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)