如何使用While循环改进此代码?

时间:2015-07-22 16:55:52

标签: python

创建一个函数addNumbers(x),它将一个数字作为参数,并将所有整数添加到1和数字(包括)之间,并返回总数。
例子 :

  

的addNumbers(10)
    55个
  的addNumbers(1)
    1个

所以这是一个问题,我已经完成了使用while循环,并且它工作正常。但我对我的代码不满意,我也使用for循环做了这个问题,这对我来说没问题,但我想知道什么是使用while循环改进代码的最佳方法。

def addNumbers(num):
    total = 1
    i = 1
    while i < num:
          i += 1
          total += i
    return total
print addNumbers(10)

这是我的循环答案:

def addNumbers(num):
    my_list = list(range(num+1) )
    for i in my_list:
        my_list.append(i)
        return sum(my_list)  

3 个答案:

答案 0 :(得分:2)

如果你想要一个非暴力的O(1)算法,你可以使用高斯的方法:

def sum_numbers(n):
    return (n+1)*n//2

答案 1 :(得分:0)

通常SO不是这些问题的地方,但无论如何...... 您可以使用sum()range()range()会返回从0nsum的数字列表,并将其汇总。

def sumNumbers(n):
    return sum(range(n+1))

编辑:并使用while循环:

def sumNumbers(n):
    i = 0
    sum = 0
    while i <= n:
       sum += i
       i += 1
    return sum

答案 2 :(得分:-1)

利用numpy的sum例程和类似的生成器,

import numpy as np

maxNumber = 10
sumOfNumbers = np.sum([(x) for x in xrange(1, maxNumber+1)])
print sumOfNumbers

生成器为您提供了数字列表&amp;例程会为你添加它们。