【问题标题】:Why does python 3 forbid if-condition after while-loop? [closed]为什么python 3在while循环之后禁止if-condition? [关闭]
【发布时间】:2022-01-06 07:45:32
【问题描述】:

我在以下代码中出现缩进错误,python 3.9

while list1:
    # do smth

if condition: # do smth

如果我把 smth 放在 while 循环之后,错误就会得到修复。看来,python 3 禁止 if 循环后的条件。是错误还是功能?

while list1:
    # do smth

var1 = 0
if condition: # do smth

【问题讨论】:

  • 这是一个错误。在您的代码中...请发布完整的代码和错误消息。
  • 您的问题中没有任何内容表明第一种语法无效。您的文件中的某处可能有一些空白/不可打印的字符。
  • while 语句后面需要一个块。如果您不提供代码块(即,如果您没有任何缩进代码),那么您会破坏语法。所以你的第二个例子,正如你目前在你的问题中所写的那样,也是错误的。
  • 如果你真的想要一个空块(例如用于测试目的),你可以使用pass关键字。
  • 请发布重现问题的实际代码。就像现在一样,两个 sn-ps 都有相同的错误。

标签: python python-3.x while-loop


【解决方案1】:

Python 期望在 while 循环之后有一个缩进块。注释掉的代码部分不算在内。所以如果你第一次有这个:

while n < 10:
    n += 1

然后(例如出于调试目的)注释掉循环体:

while n < 10:
    # n += 1

Python 会抱怨:

    ^
IndentationError: expected an indented block

如果你真的想注释掉while循环的整个循环体,暂时添加一个虚拟的pass语句:

while n < 10:
    # n += 1
    pass

【讨论】:

    【解决方案2】:

    # cmets 被解释器忽略。为了使块有效,它必须至少有一个语句。这就是pass 通常用于:

    while list1:
        # do smth
        pass
    
    if condition:
        # do smth
        pass
    

    【讨论】:

      猜你喜欢
      • 2021-10-31
      • 2017-09-16
      • 2021-10-31
      • 2013-02-05
      • 2012-04-16
      • 2016-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多