python - 为什么 "if-else-break"在 python 中中断?

标签 python loops if-statement break conditional-operator

我正在尝试使用 if-else 表达式,如果 if 条件失败,它应该会中断循环,但会收到 invalid syntax 错误。

示例代码:

a = 5
while True:
    print(a) if a > 0 else break
    a-=1

当然,如果我以传统方式书写(不使用单行),它会起作用。

else 关键字后使用 break 命令有什么问题?

最佳答案

如果我运行它,我会收到以下错误:

...     print(a) if a > 0 else break
  File "<stdin>", line 2
    print(a) if a > 0 else break
                               ^
SyntaxError: invalid syntax

这是因为

print(a) if a > 5 else break

是一个三元运算符。三元运算符不是if 语句。这些使用语法:

<expr1> if <expr2> else <expr3>

等价于一个“虚函数”:

def f():
    if <expr2>:
        return <expr1>
     else:
         return <expr3>

所以这意味着 else 旁边的部分应该是一个表达式break 不是表达式,它是一个语句。所以 Python 不期望那样。您不能返回break

, print 也不是函数。所以这会导致 print 语句出错。在 print 是一个关键字。

您可以将代码重写为:

a = 5
while True:
    if a > 5:
        print(a)
    else:
        break
    a -= 1

您可以在 documentation 中阅读更多相关信息和 PEP-308 .

关于python - 为什么 "if-else-break"在 python 中中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44848883/

相关文章:

php - 如何在foreach循环中转到下一条记录

python - 如何在操作前检查 xpath 是否可用?

java - 当我输入 100+ 作为质量时,邮寄程序由于某种原因无法正常工作

python - 循环中的 Matplotlib 传奇?

Javascript - 确保地理编码器循环在嵌套循环之前完成,从而导致 markCluster 出现问题

python - pandas 获取带有列表的列的虚拟值

python - 通过两个函数运行循环,将彼此的输出作为输入

R-基于引用其他行中的值的条件计算

python - 用于节点/边缘的自定义存储的 NetworkX 可扩展性

python - 如何将 Python Shell 写入输出文本文件?