函数总和范围给出:'int'对象不可迭代

时间:2017-08-25 12:37:07

标签: python python-3.x function range iterable

我正在尝试编写一个函数,其中用户给出范围的开始和结束,输出是该范围的总和。这是我最好的尝试:

def sum_range (start, end):
    output = 0
    userange = range(start, end)
    for i in userange :
        sum(i, output)

    return output

我收到以下错误:

  

TypeError:'int'对象不可迭代

3 个答案:

答案 0 :(得分:3)

您可能不需要构建range对象。简单地取算术级数的总和:

def sum_range(start, end):
    return (end - start) * (start + end - 1) // 2


print(sum_range(4, 30))
# 429.0
assert sum_range(4, 30) == sum(range(4, 30))

答案 1 :(得分:1)

您需要:

def sum_range(start, end):
    output = 0
    userange = range(start, end)
    for i in userange:
        output += i

    return output

def sum_range(start, end):
    return sum(range(start, end))

答案 2 :(得分:1)

你可以这样做:

def sum_range(start, end):
    return sum(range(start, end))

示例:

>>> def sum_range(start, end):
...     return sum(range(start, end))
... 
>>> sum_range(10,14)
46