python中的一行if else条件

mko*_*mko 4 python conditional-statements

def sum10(a, b):
    if sum([a, b]) % 10 == 0: return True; return False

print sum10(7, 3)
print sum10(-13, -17)
print sum10(3, 8)
Run Code Online (Sandbox Code Playgroud)

结果是:

True
True
None
Run Code Online (Sandbox Code Playgroud)

不是我的预期:

True
True
False
Run Code Online (Sandbox Code Playgroud)

任何的想法?

slo*_*oth 15

你的代码

def sum10(a, b):
    if sum([a, b]) % 10 == 0: return True; return False
Run Code Online (Sandbox Code Playgroud)

相当于

def sum10(a, b):
    if sum([a, b]) % 10 == 0: 
        return True; return False
Run Code Online (Sandbox Code Playgroud)

所以return False不会求.


一些(可能是无穷无尽的)替代方案:

    if sum([a, b]) % 10 == 0: 
        return True
    return False
Run Code Online (Sandbox Code Playgroud)

要么

    return sum([a, b]) % 10 == 0
Run Code Online (Sandbox Code Playgroud)

要么

    return True if sum([a, b]) % 10 == 0 else False
Run Code Online (Sandbox Code Playgroud)

要么

    return False if (a+b) % 10 else True
Run Code Online (Sandbox Code Playgroud)

或(最易读的恕我直言)

    return not (a + b) % 10
Run Code Online (Sandbox Code Playgroud)


st0*_*0le 10

这就是你想要的.

def sum10(a, b):
    return sum([a, b]) % 10 == 0
Run Code Online (Sandbox Code Playgroud)

IfPython中的三元也是这样的

<True Statment> if <Conditional Expression> else <False Statement>
Run Code Online (Sandbox Code Playgroud)

例如

True if sum([a,b]) % 10 == 0 else False
Run Code Online (Sandbox Code Playgroud)

我还建议使用plus运算符吗?

True if (a+b) % 10 == 0 else False
Run Code Online (Sandbox Code Playgroud)