Python:与if语句相加

时间:2016-03-31 13:14:25

标签: python

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 = 9b = 4它应该返回20但我的返回13时。

我的if声明怎么没有适用,else声明怎么办? 9 + 4是13,在我的if语句中,10到19范围内的所有内容都应返回20。

3 个答案:

答案 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之间