Python 编写一个函数sum_integers(start,end),它接受两个正整数start和end,并返回所有整数的和
我是python编程的初学者,我正在做这样一个问题,问题是: 编写一个函数sum_integers(start,end),该函数接受两个正整数start和end,并返回包含start和end的所有整数之和。如果:Python 编写一个函数sum_integers(start,end),它接受两个正整数start和end,并返回所有整数的和,python,Python,我是python编程的初学者,我正在做这样一个问题,问题是: 编写一个函数sum_integers(start,end),该函数接受两个正整数start和end,并返回包含start和end的所有整数之和。如果:end
end-1
;起始值<0;结束<0
我不知道如何开始这样的问题,如果有人能帮助我,我将不胜感激。代码如下:
def sum_integers(x,y):
"""return the sum of all integers comprised between start and end inclusive"""
for value in range(x,y):
value += 0
return sum_integers(x,y)
祝你好运,正如@Sam提到的,添加一些
if
语句可以进行检查。还要修正你的求和循环
def sum_integers(x,y):
if x < 0 or y < 0 or y < x:
return -1 # invalid inputs
"""return the sum of all integers comprised between start and end inclusive"""
total = 0 # start at zero
for value in range(x,y+1): # use y+1 so y is included
total += value # add to total
return total
def和整数(x,y):
如果x<0或y<0或y从0到n的整数之和有一个已知的公式:n(n+1)/2
因此,您可以:
def sum_integers(start, end):
if end < start:
return -1
if 0 in (start, end):
return -1
return int(end*(end+1)/2-start*(start+1)/2)+start
这项工作没有所有的麻烦范围
和添加一个接一个;但它是通过浮点运算来计算的,这就是为什么它需要最终转换为int
才能返回整数的原因。此外,对于超大整数,它可能超过Python中浮点的最大大小。事实上,自Python 3以来,Python整数没有限制(除了PC上的内存)
因此,这里是另一个利用范围
+总和
的解决方案:
def sum_integers(start, end):
if end < start:
return -1
if 0 in (start, end):
return -1
return sum(range(start, end+1))
def sum_整数(开始、结束):
如果结束<开始:
返回-1
如果0英寸(开始,结束):
返回-1
返回和(范围(开始、结束+1))
它也非常有效,因为range
返回一个迭代器,而不是
列表中的普通值和sum
是内置的Python函数。您可以使用if检查-1条件,然后使用内置函数sum()和range()获得所需的结果。sum(range(start,end+1))非常感谢,但是为什么会有y+1呢?range不包括在第二个参数中,所以+1将包括endsum@sahasrara62我不明白你的评论
>>> sum_integers(10,20)
165
def sum_integers(start, end):
if end < start:
return -1
if 0 in (start, end):
return -1
return sum(range(start, end+1))