在Python中这个“继续”的例子是什么?

时间:2012-12-19 21:12:50

标签: python range continue

所以我正在学习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

我不明白它为什么不打印&#34;通过&#34; 5次......相反,它会打印100次。

究竟还在继续做什么?如果我将var改为like(3),它只会&#34;继续&#34;到下一个代码块?

5 个答案:

答案 0 :(得分:6)

continue继续下一个循环迭代。请参阅the documentation

但是,在这种情况下无关紧要,因为永远不会达到oontinuevar从95开始,只能增加,因此永远不会少于10。

这段代码有点奇怪,因为只会执行最后一个elif。也许你打算在循环中的某个地方使用var

答案 1 :(得分: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部分。如果你想要摆脱循环并转到下一个代码块,那就是break而不是continue

现在,让我们来看看如果从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),你会发现它是99,而不是0.或者,如果print之前有continue的东西,你会看到它发生了100次。 / p>

答案 2 :(得分: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)

您的示例不仅运行五次的原因是因为您没有在for循环中使用变量var。由于范围(0,100),你的for循环将发生100次,每次变量项增加。

如果它发生了你想象的五次,你需要在你的范围函数中使用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

答案 3 :(得分:0)

continue跳转到循环的下一次迭代,而不执行任何其他语句。

在这种情况下,continue语句不会被命中,因为var从95开始并且只是递增。

答案 4 :(得分:0)

我怀疑你打算在它达到100时将var重置为零?