2016-10-31 11 views
0

にイテレータの値を変更することで...のための範囲内..ループを終了できませんでした0を返しますが、代わりに0〜9を出力します。なぜi = 11がforループを停止しなかったのですか?は、私は次のスクリプトを持っているのpython

+0

だろう、あなたのケースで、breakを使用するため、ループを停止するには

。 html?highlight = break#the-break-statement)forループを終了する – Copperfield

答えて

0

forループ内での変更iは何も効果がありません。ループ内の要素数やループ中の要素数によって制御されるため、反復回数が実行されます。同様に値がi次の反復で持ちます。

内部この

for elem in iterable: 
    #stuff 
#other stuff 

等forループがiterによって構築イテレータが場合を呼び出すとStopIteration例外をトロウますこの(任意のもののための任意の反復可能な場合)

iterator = iter(iterable) 
while True: 
    try: 
     elem = next(iterator) 
     #stuff 
    except StopIteration: 
     break 
#other stuff 

ようなものに変換されますその内部には要素がなく、次の要素を取得するにはnextを使用します。 breakはfor/whileループを終了するために使用され、try-exceptは例外の捕捉と処理に使用されます。

ご覧のとおり、elem(またはあなたの場合はi)の変更は、繰り返しの回数または次の値に無意味です。途中であなたは[ブレーク](https://docs.python.org/2.7/reference/simple_stmtsを使用することができます

for i in range(10): 
    print i 
    break 
関連する問題