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
一个声明.你不能在一个句子中使用两个语句(除非你使用一个丑陋的分号).我知道如果我们能做到这一点真的很酷,但唉,这就是它的方式.