以下语句正确无误:
print( "10 is greater than 5" ) if 10>5 else print( "nothing here " )
删除else会导致错误SyntaxError: unexpected EOF while parsing
print( "10 is greater than 5" ) if 10>5
为什么会这样?
答案 0 :(得分:6)
print
是一个函数,它采用单个值。换句话说,您需要一次调用print
,并表示其作为在线用户if
的值:
print ("10 is greater than 5" if 10 > 5 else "nothing here")
答案 1 :(得分:4)
或者您可以写
print("10 is greater than 5" if 10>5 else "nothing here ")
答案 2 :(得分:2)
您需要在打印语句中使用括号
print("10 is greater than 5") if 10>5 else print("nothing here ")
答案 3 :(得分:2)
根据您的python版本,您在打印调用中缺少(或包括)括号。
对于Python 2.7.x,您可以执行以下操作:
print "10 is greater than 5" if 10 > 5 else "nothing here"
对于Python 3.x,您可以执行以下操作:
print("10 is greater than 5") if 10 > 5 else print("nothing here")
答案 4 :(得分:1)
如果您希望if语句成为一个衬里:
if 10>5: print( "10 is greater than 5" )
编辑:
我们可以通过以下方式对系统进行入侵来逆转行为和状况:
(lambda: None, lambda: print("10 is greater than 5"))[10>5]()
EDIT2:
关于原因的小解释。
..如果.. else是Python人们的发明,以Python语言引入三元运算符。传统上这是条件?行动:行动。但是,在Python哲学中,我们希望使事情变得明确,因此..if..else使用了冗长的方法。此外,这是一个运算符,因此可以在赋值中使用,以将多个值组合为一个可以赋值的值。像a = b + c
中一样,+
是一个求和运算符,将b和c相加,并将结果分配给c。同样,.if..else是运算符,它们在三个不同的值上工作并分配给某些东西。这就是为什么它被称为三元运算符。 +
被称为二进制运算符。
但是,您可以将函数放在运算符之间,而不是将值放在运算符上,这些函数将在Python解释器尝试要求它们时执行。 (就像您可以执行a = sum(numbers) + 10
一样。Python期望有一个值的地方有一个函数(sum
),因此它执行函数sum
来获得该值。因此,实际上Python只是对获取打印功能的值(无)感兴趣,并将其分配给它不能分配的值。打印更多是副作用。)
if ..:..但是不是操作员,而是控制流程工具。这意味着它可以在if语句之后执行 block 代码。此外,我可以在此代码语句块中输入内容,例如分配。但是,当然,该块可以是单个功能。
举一些例子:
x = 1 if y > 5 else x = 10
以上内容是不允许的,因为Python希望处理值并获取语句(赋值)。而是使用:
x = 1 if y > 5 else 10
但是使用控制流工具if
,我们可以提供以下语句:
if y > 5: x = 1
走得更远。在Python2中打印不是一个函数。
因此,尽管它看起来像是一个函数,并且在Python3中是正确且有效的代码,但它甚至在Python2中也不起作用:
print("this") if True else print("that") # does not work in Python2!