所以我正在学习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;到下一个代码块?
答案 0 :(得分:6)
continue
继续下一个循环迭代。请参阅the documentation。
但是,在这种情况下无关紧要,因为永远不会达到oontinue
。 var
从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重置为零?