在范围内求和变量(python)
这是一个问题:
写一个叫做 sum_range 的函数,它接受两个整数作为参数,并返回这两个值之间所有整数的总和,包括第一个和最后一个值。参数的顺序可以随意(也就是说,第二个参数可以比第一个小)。例如:
result = sum_range(1, 1) print(result) 结果是 1
result = sum_range(2, 4) print(result) 结果是 9
result = sum_range(3, 2) print(result) 结果是 5
我的代码如下,我不知道哪里出错了,但当我测试代码时,输入 (2,4) 和 (3,2) 时返回了 'none'。
def sum_range(x,y):
if x == y:
return x
if x<y:
sum(range(x,y))
return
if x>y:
sum(range(y,x))
return
4 个回答
0
你需要返回一个总和,但在 x<y
和 x>y
的情况下你没有做到这一点。你应该
return sum(range(x,y))
或者 return sum(range(y,x))
,具体取决于情况。
另外,你的 range()
表达式里有个小错误——“包括第一个和最后一个值”。提示一下:range(1,3)
会输出什么?
0
def sum_range(x,y):
if x == y:
return x
elif x < y:
s = 0
for i in range(x,y):
s += x+(x+1)
return s
elif x > y:
s = 0
for i in range(y,x):
s += y+(y+1)
return s
这是在不使用 sum() 函数的情况下完成的。
1
你可以做得更好(至少我觉得是这样),这是我的代码:
def sum_range(a, b):
return sum(range(min(a,b),max(a,b)+1))
0
你做得很接近了,但忘记把计算的实际结果返回了。如果你只写“return”,那么返回的就是None,而不是求和的结果。
另外,你在求和的时候也没有把范围内的最后一个数字算上。下面是修正后的代码:
def sum_range(x, y):
if x == y:
return x
if x < y:
return sum(range(x, y+1))
if x > y:
return sum(range(y, x+1))