2012-09-07 38 views
0

美好的一天!即使没有定义它,为什么python会识别我的对象?

我可以有别人的上一本书,我在读书,并努力学习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

哇,感谢您的回复这么快! –

+1

请问这本书是从哪里来的? –

+1

我希望两个冲浪者不会得到完全相同的分数。 – Droogans

回答

1

注 - 不是一个答案,而只是一个大的意见,不会在注释字段格式...学习只是一些提示(其中我已经能够快速地写出我的电池是将死.. )

您应该期待使用with哪里需要自动资源关闭(请查看精细的手册)...理解可能很有用(请参阅下面的dict位)...'正确'变量的命名也不错 - 在这种情况下surfer_scores ...开箱元组如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)) 
5

不,你已经在你的for loop定义它。

在您的例子您的变量应该从你的钥匙的第一个值,在第二次迭代的第二值等。

2

您在循环定义它。每次迭代each_score将获得当前值score.keys()

相关问题