在范围内求和变量(python)

-2 投票
4 回答
3486 浏览
提问于 2025-04-18 15:29

这是一个问题:

写一个叫做 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<yx>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))

撰写回答