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
任何想法?
答案 0 :(得分:14)
您的代码
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
答案 1 :(得分: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
我是否也建议使用plus运算符?
True if (a+b) % 10 == 0 else False
答案 2 :(得分:2)
如果你想要if-else一个衬里,它们应该这样写:
return True if sum([a, b]) % 10 == 0 else False
注意一个班轮中没有两个点。
答案 3 :(得分:1)
我认为return False
永远不会被执行,因为它是在if之外,而不是在它之外。
因此,当您在if条件中使用true时,您正在执行return True
,但从不执行第二个语句。
答案 4 :(得分:1)
def sum10(a, b):
return sum([a, b])%10 == 0
答案 5 :(得分:0)
您可以尝试将结果存储在布尔变量中,然后在最后返回该变量,而不是立即返回 True 或 False。例如:
def sum(a,b):
bool result
if sum([a, b]) % 10 == 0:
bool=True
else:
bool=False
return bool