如果<if>语句的条件为False,我们是否不必跳过它?

时间:2018-07-20 17:03:04

标签: python

mysum=0
for i in range(5,11,2):
      mysum += i
      if mysum ==5:
         break
         mysum += 1
print(mysum)  // always prints: 5

我不明白为什么结果只是“ 5”。 我认为,如果 if 语句的条件为False,那么它将跳过代码块。让我解释一下我如何理解此代码。

  1. (当mysum为5时):if语句将为true。因此,它进入了代码块,并且有break语句,因此它退出了代码块。在这种情况下,print(mysum)的结果为5
  2. (当mysum为7或9时):if语句将为false。因此,它跳过代码块,并打印print(mysum)7的结果9

但是结果只有5

谢谢。

3 个答案:

答案 0 :(得分:3)

如果您只想进行下一次迭代,而不是中断循环,则应使用continue关键字。

for x in xs:
    if x == target:
        break
    f(x)

一旦等于target,将停止执行,并对其之前的每个f(x)运行x,而

for x in xs:
    if x == target:
        continue
    f(x)

f(x)中,每个x都将不等于xs运行target

答案 1 :(得分:0)

#1是正确的,如果对i = 7和i = 9执行循环,则#2几乎为真,但是在代码第一次执行print之后,它就完成了。

这将提供您描述的输出:

for i in range(5, 11, 2):
      mysum = i
      print(mysum)

答案 2 :(得分:-1)

mysum=0
for i in range(5,11,2):
    mysum += i
    if mysum ==5:
        mysum += 1
        break
print(mysum)=5

break用于过早停止正在进行的循环。 调用它时,它将停止重复循环,这意味着mysum将永远不会返回True布尔值,最终也不会mysum+=1