为啥python 3在while循环之后禁止if-condition? [关闭]

Posted

技术标签:

【中文标题】为啥python 3在while循环之后禁止if-condition? [关闭]【英文标题】: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 都有相同的错误。 【参考方案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

【讨论】:

以上是关于为啥python 3在while循环之后禁止if-condition? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

为啥空列表在 Python 的 while 循环中计算为 False

为啥这个while循环在输入的每个字符之后重复?

为啥程序跳过while循环

python if 判断 while 循环 for 循环

python while循环

(JavaScript) 为啥 while 循环中的“if”中的 continue 语句会使浏览器崩溃?