为啥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? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章