美好的一天!
我是否可以帮助我阅读一本书中的样本并尝试学习Python?
对于下面显示的代码。我从来没有定义“each_score”,为什么这个“each_score”被Python识别并运行良好?
scores={}
result_f=open("py score.txt")
for line in result_f:
(name,score)=line.split()
scores[score]=name
result_f.close()
print("The top scores were:")
for each_score in scores.keys():
print('surfer '+scores[each_score]+' scored '+each_score)
顺便说一下,文本文件内容很简单,如下所示:
Johnny 8.65
Juan 9.12
Joseph 8.45
Stacey 7.81
Aideen 8.05
Zack 7.21
Aaron 8.31
答案 0 :(得分:5)
不,您已在for
loop。
在您的示例中,您的变量应该从键中获取第一个值,在第二个迭代中获取第二个值,依此类推。
答案 1 :(得分:2)
您正在循环中定义它。每次迭代each_score
都会获得score.keys()
的当前值。
答案 2 :(得分:1)
注意 - 不是答案,而只是一个不会在评论栏中格式化的大评论...只是一些学习的提示(我必须快速写,因为我的电池即将死... )
您应该在需要自动资源关闭的地方使用with
(请查看精细的手册)...理解可能很有用(请参阅下面的dict
位)。 ..'正确'命名变量也很好 - 在这种情况下surfer_scores
...解包诸如for surfer, score
之类的元组也增加了可读性,使用字符串格式代替concat'ing也很有用。< / p>
因此,在完成必要的学习后,您的上述代码可能会变成:
with open('py score.txt') as fin:
surfer_scores = dict(line.split() for line in fin)
for surfer, score in surfer_scores.iteritems():
print('Surfer {} scored {} points'.format(surfer, score))