这是我的问题: 我必须编写一个接受2个整数值作为参数的函数,并返回两个值之间所有整数的总和,包括第一个和最后一个值。参数可以是任何顺序(即第二参数可以小于第一参数)。
这是结果的例子:
这是我尝试过的:
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)
我得到了错误的结果,有人可以帮忙吗?
答案 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}}