如何使用python循环一个范围

时间:2018-03-07 22:06:46

标签: python

这是我的问题: 我必须编写一个接受2个整数值作为参数的函数,并返回两个值之间所有整数的总和,包括第一个和最后一个值。参数可以是任何顺序(即第二参数可以小于第一参数)。

这是结果的例子:

screenshot

这是我尝试过的:

def sum_range(int1,int2):
    count = 0
    for i in range(int1,int2+1):
         count = count + i
    return count

但是对于这个例子:

result = sum_range(3, 2)

print(result)

我得到了错误的结果,有人可以帮忙吗?

4 个答案:

答案 0 :(得分:3)

如果int2小于int1,您需要交换变量:

def sum_range(int1, int2):
    if int1 > int2:
        int2, int1 = int1, int2
    count = 0
    for i in range(int1, int2 + 1):
         count = count + i
    return count

如果你将range()传递给sum() function,那么你真的不需要在这里使用循环,那么你可以将循环和求和保留到该函数中:

def sum_range(int1, int2):
    if int1 > int2:
        int2, int1 = int1, int2
    return sum(range(int1, int2 + 1))

答案 1 :(得分:1)

使用循环:

def sum_range(num1, num2):
    sum = 0
    for i in range(min(num1, num2), max(num1, num2) + 1):
        sum += i
    return sum

注意:你也可以这样做:

def sum_range(num1, num2):
    return abs((num1 * (num1 + 1) / 2) - (num2 * (num + 1) / 2))
## This works as you're essentially asking for the difference between two triangular numbers

答案 2 :(得分:0)

range从第一个参数计算到(但不包括)第二个参数,这意味着范围为空如果第一个参数不小于第二个。

答案 3 :(得分:0)

你真的不需要使用循环:

result = sum_range(4, 2)
print(result)

示例:

9

<强>输出:

{{1}}