CodingBat的下一个练习:
给定2个整数,a和b,返回它们的总和。但是,总和在范围内 10..19包含,是禁止的,所以在这种情况下只返回20.
sorta_sum(3,4)→7
sorta_sum(9,4)→20
sorta_sum(10,11)→21
这是我的答案:
def sorta_sum(a, b):
if a + b == range(10, 20):
return 20
else:
return a + b
他们说当a = 9
和b = 4
它应该返回20但我的返回13时。
我的if
声明怎么没有适用,else
声明怎么办? 9 + 4是13,在我的if
语句中,10到19范围内的所有内容都应返回20。
答案 0 :(得分:2)
那是因为您使用的是a+b == range(10,20)
而不是a+b in range(10,20)
。
range(10,20)
表示指定范围内所有整数的列表(在python2下,在python3中,它只是一个产生这些整数的迭代器)。这意味着通常为整数的a+b
将不等于range(10,20)
。
要检查这一点,您可以尝试返回sorta_sum([10,11,12,13,14], [15,16,17,18,19])
的{{1}},因为添加列表会生成范围内的整数列表,该列表应该等于20
另请注意,您的方法效率低,因为它会导致比较结果与范围中每个整数的结果。相反,您应该使用range(10,20)
来检查范围,也许您还应该避免重复添加:
if 10 <= a+b < 20
答案 1 :(得分:1)
恕我直言,Pythonic这样做的方法是:
def sorta_sum(a, b):
s = a + b
return 20 if 10 <= s < 20 else s
答案 2 :(得分:0)
range(10, 20)
实际上会产生一个数字列表,其中a+b
总和不等于一个数字。您应该检查if a+b in range(10,20):
,看看a+b
是否包含在该范围内的数字列表中。
或者,选中if 10 <= a+b < 20:
,查看a+b
是否在10到20之间