66000


コード

[code]

    l=["Mon","tue","Wed","sat"]
    
    for i in range(len(l)):
        print(i)   
        l[i] = l[i].upper()
    print(i)
    print(l)
    
[/code]

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

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

[code]

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


CC BY-SA 4.0
2020-04-26T12:33:00.460
65997
2020-04-26T13:15:48.127
2020-04-26T12:37:00.777
3060
39688
question
python
for i in rangeについての質問


違い：ループの内か外か

１つ目の print(i) は for ループの内側にある。→ ループに伴って i = 0, 1, 2, 3

２つ目の print(i) は for ループの外側にある。→ ループが止った最後の状態の i がそのまま使われる。


CC BY-SA 4.0
2020-04-26T13:08:12.390
65999
2020-04-26T13:08:12.390
7290
65997
answer


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

[code]

    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の中で切れてないんですね。。。エラー返してくれたほうがわかりやすいのに。。
    
[/code]


CC BY-SA 4.0
2020-04-26T13:15:48.127
66000
2020-04-26T13:15:48.127
10174
65997
answer