Man*_*oel 7 python loops if-statement ternary-operator break
我试图使用if-else表达式,如果if条件失败,它应该打破循环,但是会invalid syntax出错.
示例代码:
a = 5
while True:
print(a) if a > 0 else break
a-=1
Run Code Online (Sandbox Code Playgroud)
当然,如果我用传统方式书写(不使用一个班轮),它就有效.
请让我知道break在else关键字后使用命令有什么问题.
Wil*_*sem 18
如果我运行它,我会收到以下错误:
... print(a) if a > 0 else break
File "<stdin>", line 2
print(a) if a > 0 else break
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
这是因为
print(a) if a > 5 else break
Run Code Online (Sandbox Code Playgroud)
是一个三元运算符.三元运算符不是if陈述.这些使用语法:
<expr1> if <expr2> else <expr3>
Run Code Online (Sandbox Code Playgroud)
它相当于 "虚函数":
def f():
if <expr2>:
return <expr1>
else:
return <expr3>
Run Code Online (Sandbox Code Playgroud)
所以这意味着旁边的部分else应该是一个表达式.break是不是表达式,它是一个语句.所以Python并不期望这样.你不能return一个break.
在python-2.x中,print也不是一个函数.所以这会使print声明出错.在python-2.x中 print是一个关键字.
您可以将代码重写为:
a = 5
while True:
if a > 5:
print(a)
else:
break
a -= 1
Run Code Online (Sandbox Code Playgroud)
If是一个表达式,break类似于return一个声明.你不能在一个句子中使用两个语句(除非你使用一个丑陋的分号).我知道如果我们能做到这一点真的很酷,但唉,这就是它的方式.