2012-09-07 33 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()

相關問題