[英]Why does python recognise my object even when I haven't defined it?
美好的一天!
我正在阅读并尝试学习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
不,您已经在for
循环中定义了它。
在您的示例中,变量应从键中获取第一个值,在第二次迭代中,应获取第二个值,依此类推。
您正在循环中定义它。 每次迭代each_score
都会获取score.keys()
的当前值。
注意-不是答案,而是一个很大的注释,不会在注释字段中格式化...只是一些学习技巧(由于电池快要耗尽,我必须写得很快...)
您应该在需要自动资源关闭的地方使用with
(请参阅高级手册)...理解可能很有用(请参见下面的dict
位)...变量的“正确”命名也很好-在这种情况下, surfer_scores
...拆开诸如for surfer, score
元组for surfer, score
也增加了可读性,并且使用字符串格式而不是concat'ing也很有用。
因此,在您完成了必要的学习工作之后,上面的代码可能会变成类似以下内容:
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))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.