使用while语句对连续的整数求和

时间:2013-03-19 04:33:05

标签: python loops while-loop

def sum_from_to(start, end):
    """Return the sum of the integers from start up to but not including end.

    sum_from_to(int, int) -> int
    """

    while 

示例:

  • sum_from_to(3,7)应评估为18(即3 + 4 + 5 + 6)。
  • sum_from_to(3,3)应评估为0。

我该如何处理?

3 个答案:

答案 0 :(得分:2)

只是为了好玩,你可以使用欧拉求和公式纯粹用数学方法解决这个问题:

def sum_from_to(start,stop):
    return ((stop-1)*stop-(start-1)*start)/2

sum_from_to(3,7) #18

这具有计算成本低廉的优点。没有循环,没有范围,数组,你有什么。相比之下,其他功能相当昂贵。

答案 1 :(得分:1)

有更简单的解决方案。

sum(range(3, 7))

这不包括最终值。所以你会得到你所需要的。

答案 2 :(得分:1)

首先,如果这不是一个家庭作业问题,答案是微不足道的:

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

在Python 2.x中,使用xrange代替range。就是这样。

如果这是家庭作业计划,并且您不允许使用sumrange甚至for循环(此时我不得不想知道他们为什么会这样做甚至假装教你Python,但不管......),这是一个骨架:

def sum_from_to(start, end):
    total = 0
    value = start
    while ???:
        total = ???
        value = ???
    return total

你需要填写“???”部分。你如何让value一次一个地计数,直到达到end为止?你怎么做total使它保持运行总和?这就是它的全部内容。

进一步提示:

您可以使用变量的旧值来创建新值。例如:

i = 1
i = i * 2 # now it's 2
i = i * 2 # now it's 4