问题"给定2个整数,a和b,如果一个是10,或者它们的总和是10,则返回True。"
在第一次测试中,为什么输入(9,9)和(8,3)会返回True?
我已经使用不同的解决方案解决了这个问题(下面进一步说明),但我很难理解为什么第一个解决方案不起作用,因为当整数都不是10时,它们在求和时都等于10!
感谢您的帮助。
def makes10(a, b):
if a or b == 10:
return True
if a + b == 10:
return True
else:
return False
def makes10(a, b):
if a == 10:
return True
if b == 10:
return True
if a + b == 10:
return True
else:
return False
答案 0 :(得分:3)
它说a or b == 10
,因为a是真的,即不为零,它返回true。
答案 1 :(得分:1)
因为:
if a or b == 10:
执行等同于
temp = (a or b)
if (temp == 10):
你可以不针对单个固定值测试多个值。您必须单独测试每个,例如如果你有
if (a == 10) or (b == 10):
该声明本来有用。阅读文档:https://docs.python.org/3/reference/expressions.html#operator-precedence
答案 2 :(得分:1)
a or b == 10
评估为True,a
评估为True
你必须写
(a == 10) or (b == 10)
答案 3 :(得分:1)
if a or b == 10:
这不符合你的想法。它将被评估为:
if (a) or (b == 10):
你最想要的是:
if a == 10 or b == 10:
答案 4 :(得分:1)
a or b == 10
这将首先在布尔表达式的上下文中计算a,如果这是真的,则整个表达式都是正确的。如果为false,则会评估b == 10
。它与a == 10 or b == 10
不同。
或者,您只需说
if 10 in [a, b]:
这也将做你想要完成的事情。