-2

だから私はPythonを学んでいる途中で、私を混乱させるこのコードに出くわしました。

var = 95
for items in range(0,100):
    if var < 10:
        continue
    elif var == 10:
        print("hit")
    elif var > 10:
        print("passed")
    var = var + 1

なぜ「合格」を5回だけ印刷しないのかわかりません...代わりに100回のように印刷します。

正確には何を続けていますか?varをlike(3)に変更すると、次のコードブロックに「続行」されますか?

4

5 に答える 5

6

continue次のループ反復に進みます。ドキュメントを参照してください。

ただし、この場合は、oontinueに到達することはないため、問題ではありません。 var95から始まり、増加することしかできないため、10を下回ることはありません。

elif最後のものだけが実行されるため、このコードは少し奇妙です。おそらくvar、ループのどこかで使用するつもりでしたか?

于 2012-12-19T21:13:59.057 に答える
2

BrenBarnが言うようcontinueに、ループの残りの部分をスキップして、次の反復に進みます。

varただし、95から開始する場合は問題ではありません。これは、そのコードに到達することがないためです。トレースして、何が起こるかを見てみましょう。

var = 95
First loop, items = 0:
   since var (95) > 10:
       print("passed")
   var = var + 1 = 96
Next loop, items = 1
   since var (96) > 10:
       print("passed")
   var = var + 1 = 97
...
100th loop, items = 99
   since var (194) > 10:
       print("passed")
   var = var + 1 = 195

varをlike(3)に変更すると、次のコードブロックに「続行」されますか?

いいえ、whileループの次の反復に進みます。つまり、var = var + 1パーツをスキップします。ループから抜け出して次のコードブロックに移動したい場合は、ではありませbreakcontinue

それでは、3から始めた場合に何が起こるかを追跡してみましょう。

var = 3
First loop, items = 0:
   since var (3) < 10:
       continue # skips to the next loop iteration
Second loop, items = 1:
   since var (3) < 10:
       continue # skips to the next loop iteration
...
Last loop, items = 99:
   since var (3) < 10:
       continue # skips to the next loop iteration

のせいで、continueに到達することはないvar = var + 1ので、何もせずに100回ループするだけです。

つまり、たとえばprint(var)ループの後にテストしようとすると、次のコードブロックにスキップしたように見えます。しかし、そこに置くと、print(items)0ではなく99であることがわかります。または、print以前に何かをしたcontinue場合は、100回発生することがわかります。

于 2012-12-19T21:31:59.567 に答える
1

varとitemsの使用方法が異なるため、この例は少し奇妙です。例をもう少し明確にするために書き直します。

for i in range(0,100):

    # If i is less than 10, do nothing.
    if i < 10:
        continue

    # If i equals 10, print "hit"
    if i == 10:
        print "hit"

    # If i is greater than 10, print "passed"
    if i > 10:
        print "passed"

これは出力します:

hit
passed
passed
... (repeat 87 more times)

例が5回だけ実行されない理由は、forループで変数varを使用していないためです。range(0、100)があるため、forループは100回発生し、変数項目は毎回インクリメントされます。

予想どおりに5回発生するには、範囲関数でvarを次のように使用する必要があります。

var = 95
for item in range(var, 100):
    if var < 10:
        continue
    elif var == 10:
        print("hit")
    elif var > 10:
        print("passed")
    var = var + 1
于 2012-12-19T21:32:36.460 に答える
0

continue他のステートメントを実行せずに、ループの次の反復にスキップします。

この場合、continuevarは95から始まり、インクリメントされるだけなので、ステートメントはヒットしません。

于 2012-12-19T21:18:10.950 に答える
0

100に達したときにvarをゼロにリセットするつもりだったと思いますか?

于 2012-12-19T21:18:58.623 に答える