0

再会!

我可以在我正在阅读并尝试学习 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
4

3 回答 3

5

不,你已经在你的for循环中定义了它。

在您的示例中,您的变量应该从您的键中获取第一个值,在第二次迭代中获取第二个值,依此类推。

于 2012-09-07T08:55:58.293 回答
2

您正在循环中定义它。每次迭代each_score都会得到 的当前值score.keys()

于 2012-09-07T08:55:58.980 回答
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))
于 2012-09-07T09:42:21.810 回答