Python noob;なぜこのループが終了しないのか説明してください。なぜこのループが中断しないのですか?
for i in range(0,10):
print "Hello, World!"
if i == 5: i = 15
print i
next
よろしく
Python noob;なぜこのループが終了しないのか説明してください。なぜこのループが中断しないのですか?
for i in range(0,10):
print "Hello, World!"
if i == 5: i = 15
print i
next
よろしく
ので、そうのような10個の要素のアレイに作成され、あなたがrange(0,10)
で行っている:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
を、あなたがそれぞれ1を通過しています。
他のプログラミング言語では、foreachループと呼ばれるものを実行しています。
それ以外の場合は、別の方法で行います。
ああ、それを手に入れよう。ありがとう。 – Teson
問題はありません:) –
なぜそれが出るのでしょうか? range(0, 10)
の要素を反復していますが、唯一の終了条件は要素がなくなったことです。名前を再バインドしても、イテレート可能なものは変更されません。早期に中断したい場合は、break
を使用してください。
for i in range(0, 10):
if i == 5: break
for i in whatever
は、whatever
の各要素に対して、その要素にi
を一度設定するとループ本体が実行されることを意味するためです。各反復の終わりに、i
は依然としてwhatever
の要素でなければならないというルールはありません。
i
をループ本体に再割り当てしても、ループ本体の実行頻度や次の反復で保持される値は無効です。
Pythonのfor
ループはカウントされないため、反復処理されます。 range
は、iterable(Python 2.xのリスト)を生成し、その繰り返し可能なものは反復処理されます。ループ本体が実行される前に、次の項目がその項目から引き出され、ループ本体内で反復変数に加えた変更は、次の値のメモリに影響しません。それは他の場所に保存されており、一般的にそれに影響を与えることはできません。単にbreak
を使用してください。
range
オブジェクトは、0...10
の範囲の値のコレクションにすぎません。単なる数字の集まりなので、その背後に論理はありません。
for item in set
の構文は、基本的にset
のすべての要素をループし、すべての項目がループオーバーされたときにのみ破棄されます。
あなたのコードは等価ではないご希望の結果生じるであろうC++ for
ループにです:あなたは、ちょうどbreak
ループループから抜け出すにしたい場合は
for (int i = 0; i < 10; i++) {
if (i == 5) {
i = 15;
}
}
を:
for i in range(0,10):
print "Hello, World!"
if i == 5: break
print i
ループでは、for
ループはCまたはJavaのようなループではないwhile
です。代わりにiterableの繰り返しです。
range(0, 10)
(これはrange(10)
と同じです)は、リストを返す関数です(Python 2.xと仮定します)。Pythonリストは反復可能なので、for
ループで使用することができます。言語では、第1、第2、第3要素などに変数を割り当て、本体部分を実行するたびにfor
を実行します。
本文でその変数を変更するかどうかは関係ありません... Pythonはすべての要素が処理されるまでリストの次の要素を選択します。
for i in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
print "Hello, world."
if i == 5: i = 15
print i
からあなたのループが本当に異なっていないことを考えてみましょう順番にも
for i in [1, 29, 5, 3, 77, 91]:
print "Hello, world."
if i == 5: i = 15
print i
と非常によく似ているという理由i
への割り当ては、ループを破る必要がありますか?
あなたのコードの中の 'next'は必要ではなく、あなたが思うとは思いません。実際には、イテレータを前進させるために使用される組み込み関数を指しますが、それを呼び出すことはありません。 –