Python:如何将while循环存储的值的总和变成变量?

时间:2012-08-22 22:47:41

标签: python loops while-loop

我只是一个初学者:P。 我在Codeacademy上做了关于while循环的教程"点击here!" , 但我已经陷入了这个部分:写一个while循环,存储到" theSum"前10个正整数(包括10个)的总和。这就是它给你的工作:

theSum = 0
num = 1
while num <= 10:
    print num
    num = num + 1

它在控制台中的单独行上打印出数字1到10。任何人都可以向我解释如何将它存储在变量中的值总和&#34; mySum&#34;?到目前为止,我所做的任何事情对我都没有用。 :(

编辑: 好的,所以我试过这个:

theSum = 0
num = 1
while num <= 10:
    num += 1
    mySum = num
    mySum = mySum + num

print mySum

这给了我22,为什么?反正我还在吗? (感谢所有回复,但我明天再试一次。)

编辑:好的,我明白了!感谢您的帮助。 :)

mySum = 0 
num = 1 
while num <= 10: 
    mySum += num 
    num += 1    
print mySum

4 个答案:

答案 0 :(得分:5)

您已经显示了几乎所有需要的代码。

剩下的问题是,当您在num循环中正确生成要添加的值(while)时,您会累积这些值变量theSum

我不会故意向您提供缺少的代码,以便您可以从问题中学到一些东西......但是您需要将num的值添加到您的变量中<{1}} 内部循环。执行此操作的代码(它实际上只是一个语句,即一行代码)与您在循环中处理/更新theSum的值的方式有些类似。

这有帮助吗?

答案 1 :(得分:2)

让我们深入了解您发布的代码。我已对行进行编号,以便我可以参考它们。

1. num = 1
2. while num <= 10:
3.     num += 1
4.     mySum = num
5.     mySum = mySum + num

6. print mySum

这是一次干战

1. simple enough, create a new variable `num` and bind it to the number `1`
2. `num` is less than 10, so do the body of the loop
3. `num` is `1` so now bind it to `2`
4. create a new variable `mySum` and bind to `2` (same as num)
5. `mySum` is `2` and `num` is `2` so bind `mySum` to `4`
Back to the top of the loop
2. `num` is less than 10, so do the body of the loop
3. `num` is `2` so now bind it to `3`
4. bind `mySum` to `3` (same as num)
5. `mySum` is `3` and `num` is `3` so bind `mySum` to `6`
Back to the top of the loop
2. `num` is less than 10, so do the body of the loop
3. `num` is `3` so now bind it to `4`
4. bind `mySum` to `4` (same as num)
5. `mySum` is `4` and `num` is `4` so bind `mySum` to `8`
Back to the top of the loop
...

看起来有些不对劲。你为什么要在循环中做这个mySum = num?你期望它做什么?

答案 2 :(得分:0)

For循环!嘿,我说!

n=10
sum(range(n+1))

答案 3 :(得分:0)

我也非常努力。

这是我的解决方案,但我从interactivepython.org(http://interactivepython.org/runestone/static/pip2/IndefiniteIteration/ThewhileStatement.html

获得了帮助

如果没有'return'功能,我无法弄清楚如何做到这一点。请参阅下面的解决方案和说明:

def problem1_3(x):
    my_sum=0
    count = 1
    while count<=x:
        my_sum=my_sum+count
        count = count+1
    return my_sum
    print(my_sum)

让我们假设您设置x = 3 我相信 python解释的方式如下: 设置my_sum = 0和count = 1 1.使用while循环的第一次迭代:1&lt; = 3:True 所以my_sum = 0 + 1 加计数增加1,现在计数= 2 “返回my_sum”是关键,因为它允许my_sum循环回到循环的顶部,现在为1而不是0。

  1. while循环的第二次迭代:2&lt; = 3:True 所以my_sum = 1 + 2;再次计数增加1,所以现在count = 3 返回my_sum再次将my_sum的新值3返回到循环顶部

  2. while循环的第三次迭代:3&lt; = 3:True 所以my_sum = 3 + 3;计数增加1,所以现在count = 4 返回my_sum再次将my_sum的新值6返回到循环顶部

  3. while循环的第四次迭代从未发生,因为4&lt; = 3:False 现在程序打印my_sum,现在等于6。

  4. 但是,我认为有一种更简单的方法可以做到这一点。有没有办法让python生成一个列表,然后对列表中的值求和?例如,我可以编写一个名为sumlist(n)的程序,其中python列出了从0到n的整数,然后将它们相加起来?