文件不是列表。您不能在不倒退文件对象的情况下循环播放它们,因为完成阅读后文件位置不会重置为开始。
您可以
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)


