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)
结果是:
True
True
None
不是我所期望的:
True
True
False
任何想法?
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)
结果是:
True
True
None
不是我所期望的:
True
True
False
任何想法?
你的代码
def sum10(a, b):
if sum([a, b]) % 10 == 0: return True; return False
相当于
def sum10(a, b):
if sum([a, b]) % 10 == 0:
return True; return False
所以return False
永远不会被评估。
一些(可能是无穷无尽的)替代方案:
if sum([a, b]) % 10 == 0:
return True
return False
或者
return sum([a, b]) % 10 == 0
或者
return True if sum([a, b]) % 10 == 0 else False
或者
return False if (a+b) % 10 else True
或(最易读的恕我直言)
return not (a + b) % 10
这就是你想要的。
def sum10(a, b):
return sum([a, b]) % 10 == 0
Python中的三元If
也是这样的
<True Statment> if <Conditional Expression> else <False Statement>
例如
True if sum([a,b]) % 10 == 0 else False
我还可以推荐使用加号运算符吗?
True if (a+b) % 10 == 0 else False
如果你想有 if-else 一个衬里,它们应该这样写:
return True if sum([a, b]) % 10 == 0 else False
请注意,那条衬里中没有两点。
我认为return False
永远不会执行,因为它在 if 中,而不是在 if 之外。
因此,当您在 if 条件中取 true 时,您正在执行return True
,但绝不是第二条语句。
def sum10(a, b):
return sum([a, b])%10 == 0
您可以尝试将结果存储在布尔变量中,然后在最后返回该变量,而不是立即返回 True 或 False。例如:
def sum(a,b):
bool result
if sum([a, b]) % 10 == 0:
bool=True
else:
bool=False
return bool