【问题标题】:if pass and if continue in python如果通过,如果在 python 中继续
【发布时间】:2016-09-04 14:47:45
【问题描述】:

我看到有人贴了下面的答案来区分if x: passif x: continue

>>> a = [0, 1, 2]
>>> for element in a:
...     if not element:
...         pass
...     print(element)
... 
0
1
2
>>> for element in a:
...     if not element:
...         continue
...     print(element)
... 
1
2

if not elementa = 0 的结果是什么?为什么使用continue时,不打印0?

【问题讨论】:

    标签: python if-statement continue


    【解决方案1】:

    '0' 未打印,因为条件 "if not element:"

    如果元素为None、False、空字符串('')或0,则循环将继续下一次迭代。

    【讨论】:

    • 不限于None0。如果元素为 Falsey,它将继续。
    • “如果不是 1”是否意味着 False?那为什么用 continue 打印 1?另外,如果有人写了“if None”,是否也会继续不打印?谢谢。
    • 1) 是的。 if not 1 表示 False。在这种情况下,条件将失败并继续执行print 语句。这就是在代码中打印 1 的原因。仅当 <some value> 的值是任何虚假值(例如 None、False、空字符串('')或 0 时,If not <some value> 才会为 True2) if None 表示始终为 @987654330 @
    【解决方案2】:

    passcontinue 在 Python 中存在根本区别。 pass 什么都不做,而 continue 跳转到 for 循环的下一次迭代。语句if not 0 总是计算为True,所以passcontinue 语句都将被执行。 pass 将不执行任何操作并打印该值,而 continue 将忽略下面编写的 print 语句跳到下一次迭代。

    【讨论】:

      【解决方案3】:
      if not element:
      

      在这两个例子中,这只会匹配0

      pass
      

      什么都不做。所以下一个命令print element会被执行。

      continue
      

      这告诉 Python 停止这个 for 循环并跳到循环的下一个循环。所以print element 永远无法到达。相反,for 循环将采用下一个值 1 并从顶部开始。

      【讨论】:

        【解决方案4】:

        发件人:https://docs.python.org/2/tutorial/controlflow.html#pass-statements

        pass 语句什么都不做。当语法上需要语句但程序不需要操作时,可以使用它。

        在您的代码 sn-p 中,if not element 将在 element = 0 时计算为 true。在 python 中,0 与布尔值 false 相同。在第一个循环中,pass 什么都不做,所以它打印了所有三个元素。在第二个循环中, continue 将停止执行该迭代的其余循环。所以打印语句永远不会执行。所以它只打印 1 和 2。

        【讨论】:

          【解决方案5】:

          使用continue 传递for loop 的下一个迭代
          使用 pass 什么都不做
          因此,当使用 continue 时,print 不会发生(因为代码继续下一次迭代)
          当使用pass 时,它只会平静地结束if(实际上什么都不做)并同时执行print

          【讨论】:

          • 如果我理解正确,continue 是在说“请在循环中输入下一个值”?并且只有在 if 语句是 False 时才“继续”?
          【解决方案6】:

          continue 是一个控制流语句,用于转义最里面的迭代体。当您的代码命中时

          if not element
          

          解释器会跳过所有未验证到true 的元素值。 0 就是这样一个值,当它没有遇到 continue 语句时,它会跳到循环的下一次迭代,因此继续打印元素 1 的值,然后是 2

          相比之下,pass语句什么也不做,只是跳过并返回到下一行代码执行。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-10-17
            • 2018-07-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多