Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 编写一个函数sum_integers(start,end),它接受两个正整数start和end,并返回所有整数的和_Python - Fatal编程技术网

Python 编写一个函数sum_integers(start,end),它接受两个正整数start和end,并返回所有整数的和

Python 编写一个函数sum_integers(start,end),它接受两个正整数start和end,并返回所有整数的和,python,Python,我是python编程的初学者,我正在做这样一个问题,问题是: 编写一个函数sum_integers(start,end),该函数接受两个正整数start和end,并返回包含start和end的所有整数之和。如果:end

我是python编程的初学者,我正在做这样一个问题,问题是:

编写一个函数sum_integers(start,end),该函数接受两个正整数start和end,并返回包含start和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))