循环返回整数之和

时间:2016-11-14 04:38:33

标签: python python-2.7 while-loop

我遇到了一个问题,我必须返回用户输入的数字的10个种子内的所有数字的总和(包括)。例如,如果数字为1,则为1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45.到目前为止,我有:

def temp(n1):

    seed = n1
    counter = 0 
    while counter < 9:
         n1 += 1
         counter+= 1
return n1

对于为什么我的代码不起作用并帮助修复我的代码,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

在你的代码中,每次添加1,你应该添加计数器加1(因为每次你应该增加一个 more ):

def temp(n1):
    n1 -= 1                        <-- HERE
    counter = 0 

    while counter < 9:
         n1 += counter + 1         <-- HERE
         counter += 1

    return n1

另外,你需要从n1中减去一个,以弥补我们应该在第0次迭代时加0的事实。

另一方面,您不需要变量seed,我认为这是来自以前的算法设计。

这会产生正确的结果:

>>> temp(1)
45

另一种方法是使用forrange。使用forrange的“每隔一个数字”问题的解决方案出现在此处:

def temp(n1):
    n1 -= 1

    for counter in range(1, 11, 2): # We use 11 instead of 9 because we want to *stop* on 11 (9 is inclusive)
         n1 += counter

    return n1

答案 1 :(得分:2)

@ Majora320的答案是正确的,并解释了为什么你的代码不起作用。但是,更简洁的解决方案将是

def temp(n):
   seed = 10
   return ((seed * (seed-1))/2) + (n-1)

print temp(1)
print temp(10)
print temp(11)
print temp(12)

<强> OP

45
54
55
56

基本上,它需要提前数学方程种子*(种子-1)/ 2来从1开始添加连续数。但是因为你的基数no可以大于1我已经添加(n-1)来调整该偏移量。