if语句返回一行并返回

时间:2017-01-18 15:12:15

标签: python if-statement syntax-error

我知道'一行if语句'问题已被多次询问,但我无法弄清楚我的代码有什么问题。我想转换

def has_no_e(word):
    if 'e' not in word:
        return True

到一行功能,如:

def hasNoE(word):
    return True if 'e' not in word

但如果我这样做,我会收到语法错误 - 为什么?

2 个答案:

答案 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