为什么;否则,请中断“;python中的中断?
我试图使用if-else表达式,如果为什么;否则,请中断“;python中的中断?,python,loops,if-statement,break,ternary-operator,python-2.x,Python,Loops,If Statement,Break,Ternary Operator,Python 2.x,我试图使用if-else表达式,如果if条件失败,该表达式应该会中断循环,但会出现无效语法错误 示例代码: a = 5 while True: print(a) if a > 0 else break a-=1 当然,如果我用传统的方式(不使用一行)写作,它是有效的 请让我知道在else关键字之后使用break命令有什么问题。如果我运行此命令,我会得到以下错误: ... print(a) if a > 0 else break File "<std
if
条件失败,该表达式应该会中断循环,但会出现无效语法
错误
示例代码:
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
是一个三元运算符。三元运算符是noif
语句。这些工具与语法一起工作:
<expr1> if <expr2> else <expr3>
您可以在和中了解更多信息。
如果
是一个表达式,break
类似于return
是一个语句。不能在一个句子中使用两个语句(除非使用难看的分号)。我知道如果我们能做到这一点会很酷,但唉,事情就是这样。简单地说,你误用了“一行if
语句”()。它总是计算为一个表达式(即一个值)。就是
<expr1> if <condition> else <expr2>
当然,括号是完全不必要的(甚至是不鼓励的),但希望对理解这一行的含义有用
所以,
print(a) if a > 0 else break
尝试计算print(a)
(根据Python3中print()
的定义,它总是返回None
——完全有效,但可能不是您通常想要的),然后计算break
,因为它是a,所以不会计算任何值,因此出现无效语法
错误
因此,如果您想根据条件执行两条语句中的一条,您确实需要
威廉·范昂森。在一行中可能会有一些很难做到的方法,但在Python中,多行是解决类似问题的常用方法。Willem Van Onsem的答案有很多有用的信息,但我喜欢这个答案的清晰性和实用性;更容易记住的是,你不能在一个句子中使用两个语句。
a = 5
while True:
if a > 5:
print(a)
else:
break
a -= 1
<expr1> if <condition> else <expr2>
y = 0
x = (5 if (y > 0) else 6)
print(x) # 6
print(a) if a > 0 else break