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ループで定義しました。

この例では、変数はキーから最初の値を取得し、2回目の反復では2番目の値を取得する必要があります。

于 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をアンパックすると可読性が向上し、連結の代わりに文字列の書式設定を使用することも役立ちます。

したがって、必要な学習ビットを実行した後、上記のコードは次のようになります。

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 に答える