for i in rangeについての質問

投稿者: Anonymous

コード

l=["Mon","tue","Wed","sat"]

for i in range(len(l)):
    print(i)   
    l[i] = l[i].upper()
print(i)
print(l)

上のコードにおいて、1つ目のprint(i)では結果が「0,1,2,3」と出ますが、2つ目のprint(i)では結果が「3」とのみ出ます。この二つの違いはなんでしょうか?

結果を以下に示します。よろしくお願いします。

0
1
2
3
3
['MON', 'TUE', 'WED', 'SAT']

解決

結論から言えば2つの「print(i)」に違いはありません。

for i in range(len(l)):
   ★iの中に0から配列lのサイズまでループする。つまりiは0,1,2,3が入ってくる
   print(i)
   ★iの内容を標準出力に出力する。前述の通り、iは0,1,2,3とループ内で変更させるので
    0
    1
    2
    3 
      と表示される。この時iの値は最終的に3が入っていることに注意
print(i) 
 ★前述の通りループは終了し、i=3のままこの処理を実行するので、3が出力される。
面白いのは、iの変数スコープってforの中で切れてないんですね。。。エラー返してくれたほうがわかりやすいのに。。
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *