我很清楚您可以在Python中执行一行if else
语句,但我想知道是否可以向其添加or
。出于某种原因,这不起作用,即使它看起来应该如此。有没有办法做到这一点:
def write(value):
return 'That is not a good value' if value is not 1 or 0 #SyntaxError: invalid syntax
修改
因此,此函数将检查传入的值是否为整数0或1,如果不是则返回'That is not a good value'
,否则返回任何内容。即。
write(1) #Nothing
write(2) # That is not a good value
答案 0 :(得分:6)
试试这个:
'That is not a good value' if value not in (0, 1) else None
在上面,我们可以使用in
成员资格运算符来测试具有两个或更多条件的or
表达式的等价物。请注意,条件表达式必须具有else
部分(请参阅documentation)。如果你不想返回“任何东西”,你仍然需要返回某些东西。例如,空字符串''
或None
。
答案 1 :(得分:3)
有两个问题。
value is not (1 or 0)
is
来比较数字。使用==
或!=
。让我们解决它。
def write(value):
return 'That is not a good value' if value != 1 and value != 0 else 'Great value!'
或者,为了清晰起见使用一套:
def write(value):
return 'That is not a good value' if value not in {0, 1} else 'Great value!'
而且,我们现在可以看到这一点:
>>> def write(value):
... return 'That is not a good value' if value not in {0, 1} else 'Great value!'
...
>>> write(0)
'Great value!'
>>> write(1)
'Great value!'
>>> write(2)
'That is not a good value'