2

Python Programming: An Intro to Comp Sci で本の裏の演習を行っています。

for i in [1,3,5,7,9]:
    print(i, ":", i**3)
print(i)

これが出力されます

1:1
3:27
5:125
7:343
9:729
9

私の質問は、なぜ余分な 9 を出力するのですか? 最後のループ印刷は 9:729 ではないでしょうか? それは何かと関係があるに違いない

print(i, ":", i**3)

私がちょうど入れた場合:

for i in [1,3,5,7,9]:
   print(i)

印刷するだけです

1
3
5
7
9

他に手伝ってくれる人がいないのでよろしくお願いします!:)

4

3 に答える 3

3

Python for ループでは、ループの「本体」がインデントされます。

つまり、あなたの場合print(i, ":", i**3)は「体」です。1 から始まり 9 で終わるi, ":", i**3の各値を出力します。i

ループが実行されると、値がiリスト内の次の項目に変更されます。

ループが終了すると、for ループから完全に独立した次のコード行に進みます。したがって、for ループの後に 1 つのコマンドがありprint(i)ます。が最後に 9 に設定されたのでi、このコマンドは基本的に を意味しprint(9)ます。

あなたが望むものは:

for i in [1,3,5,7,9]:
    print(i, ":", i**3)
于 2013-01-15T00:28:19.547 に答える
2

最後の行のprint(i)..............

于 2013-01-15T00:20:39.610 に答える
1

に割り当てられた最後の値iは9であるため、最後の行は、ループ内で発生したこの値の割り当てを参照しています。9:729印刷された最後のものでしたが、それは最後の割り当てではありませんでした。

編集:

1:1 1 3:27 3 5:125 5 7:343 7 9:729 9のように印刷されないのはなぜですか?

コードがインデントされて次のようになっている場合は、次のように出力されます。

for i in [1,3,5,7,9]:
    print(i, ":", i**3)
    print(i)

最後の行にインデントがないため、forループの外に出てしまいます。

于 2013-01-15T00:21:13.950 に答える