以下のコードがありますが、何らかの理由で while ループが終了しません。
def iterator(i, f):
print len(f)
print i
while i < len(f):
if i == 0:
print "Restarted."
else:
print "iterate."
function()
return f
printステートメントは実際には必要ありませんが、カウンターi
は別の関数によって増加するため、問題がないことを確認したかった. f
4 つのアイテムを含むリストの場合、次のように出力されます。
4, 0, Restarted.
4, 1, iterate.
4, 2, iterate.
4, 3, iterate.
4, 4, iterate.
4, 4, iterate.
etc..
なぜ while ループに入り続けるのか理解できませi = 4
んlen(f) = 4
。ループを破って return 関数を実行するはずですが、何らかの理由で実行されません。
条件が false になったときに while ループが終了しない理由を説明できる人はいますか?
編集:何が起こっているのかをよりよく説明するためのコード。また、i
によって変更されることも明確にしました。それが理にかなっていることを願っています。function()
iterator
i
f = [0,1,2,3]
i = 0
def iterator(i, f):
print i
while i < len(f):
print i
if i == 0:
print "Restarted."
else:
print "iterate."
function(i, f)
return f
def function(i, f):
i += 1
iterator(i, f)
iterator(i,f)
この結果は次のようになります。
0, 0, Restarted.
1, 1, iterate.
2, 2, iterate.
3, 3, iterate.
4, 3, iterate.
4, 3, iterate.
etc.