创建一个函数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)
答案 0 :(得分:2)
如果你想要一个非暴力的O(1)算法,你可以使用高斯的方法:
def sum_numbers(n):
return (n+1)*n//2
答案 1 :(得分:0)
通常SO不是这些问题的地方,但无论如何......
您可以使用sum()
和range()
。 range()
会返回从0
到n
和sum
的数字列表,并将其汇总。
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;例程会为你添加它们。