Python:第二个for循环未运行

2024-04-14

scores = []
surfers = []
results_f = open("results.txt")

for each_line in results_f:
    (name,score) = each_line.split()
    scores.append(float(score))

for line in results_f:                      
    (name,score) = line.split()
    surfers.append(name)

results_f.close()
scores.sort(reverse = True)  
print("The high scores are : ")
print("1 - "+str(scores[0]))
print("2 - "+str(scores[1]))
print("3 - "+str(scores[2]))

print(surfers[0])

只是一个实验性程序。但第二个 for 循环似乎没有运行。如果我交换 for 循环的位置;第二个位置的循环再次不会运行。为什么会发生这种情况?


文件不是列表。您无法在不倒回文件对象的情况下循环它们,因为当您完成读取时,文件位置不会重置为开始位置。

你可以添加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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python:第二个for循环未运行 的相关文章

随机推荐