我知道'一行if语句'问题已被多次询问,但我无法弄清楚我的代码有什么问题。我想转换
def has_no_e(word):
if 'e' not in word:
return True
到一行功能,如:
def hasNoE(word):
return True if 'e' not in word
但如果我这样做,我会收到语法错误 - 为什么?
答案 0 :(得分:4)
我认为因为你没有指定else
部分。你应该把它写成:
return True if 'e' not in word else None
这是因为Python将其视为:
return <expr>
并指定三元条件运算符为<expr>
,其语法为:
<expr1> if <condition> else <expr2>
所以Python正在寻找你的else
部分。
False
?如果测试失败,也许您想要返回False
。在这种情况下,您可以这样写:
return True if 'e' not in word else False
但这可以缩短为:
return 'e' not in word
答案 1 :(得分:0)
三元条件语句要求您也有else
。因此,你必须:
def hasNoE(word):
return True if 'e' not in word else False