以下のコードがありますが、何らかの理由で 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は別の関数によって増加するため、問題がないことを確認したかった. f4 つのアイテムを含むリストの場合、次のように出力されます。
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()iteratori
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.