【问题标题】:Python:How to make the sum of the values of a while loop store into a variable?Python:如何将while循环的值的总和存储到一个变量中?
【发布时间】:2012-08-22 22:47:40
【问题描述】:

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

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

它在控制台的不同行上打印出数字 1 到 10。谁能向我解释如何让它将值的总和存储在变量“mySum”中?到目前为止,我尝试过的任何事情都对我不起作用。 :(

编辑: 好的,我刚刚尝试了这个:

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

【问题讨论】:

  • “到目前为止我尝试过的任何事情都没有奏效” - 你能举一些你尝试过的事情的例子吗?这总是让我们更容易为您提供指导。
  • 这就像去一个家居装饰网站说“我正在尝试粉刷我的房子,但我尝试过的任何方法都没有奏效”如果你愿意,你需要更好地提问获得有用的帮助。告诉我们什么没用

标签: python loops while-loop


【解决方案1】:

你的代码已经显示了几乎所有需要的东西。

剩下的问题是,当您在 while-loop 中正确生成要添加的值 (num) 时,您没有在变量 theSum 中累积这些值.

我不会故意给你缺少的代码,这样你就可以从你的问题中学到一些东西......但是你需要将 num 的值添加到你的变量 @987654325 @ inside 循环。执行此操作的代码(实际上只有 一个 语句,即一行代码)将与您在循环中处理/更新 num 值的方式有些相似。

这有帮助吗?

【讨论】:

  • 该代码已经给出。整个任务就是添加一行!
  • @gnibbler 我知道 .. 就像我说的,他非常接近并且已经完成了大部分工作。你认为明确地说他只是缺少一个陈述会有所帮助吗?
  • 我想你误会了。 codeacademy 上的问题已经将这 5 行作为问题的一部分给出了
  • @gnibbler 哦,是的,我完全误解了你在说什么。我现在明白了.. 感谢您的澄清。
  • 知道了!感谢你和 gnibbler :D。我将编辑我的问题以显示我做了什么。
【解决方案2】:

让我们试一下您发布的代码。我已经对这些行进行了编号,以便我可以参考它们。

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

6. print mySum

这是一个试运行

1. 很简单,创建一个新变量`num`并将其绑定到数字`1` 2.`num`小于10,循环体也是如此 3. `num` 是 `1` 所以现在将它绑定到 `2` 4.创建一个新变量`mySum`并绑定到`2`(与num相同) 5. `mySum` 是 `2` 而 `num` 是 `2` 所以将 `mySum` 绑定到 `4` 回到循环顶部 2.`num`小于10,循环体也是如此 3. `num` 是 `2` 所以现在将它绑定到 `3` 4.将`mySum`绑定到`3`(与num相同) 5. `mySum` 是 `3` 而 `num` 是 `3` 所以将 `mySum` 绑定到 `6` 回到循环顶部 2.`num`小于10,循环体也是如此 3. `num` 是 `3` 所以现在将它绑定到 `4` 4.将`mySum`绑定到`4`(与num相同) 5. `mySum` 是 `4` 并且 `num` 是 `4` 所以将 `mySum` 绑定到 `8` 回到循环顶部 ...

看起来有些不对劲。你为什么在循环内这样做mySum = num?你希望它做什么?

【讨论】:

  • 我认为编写“创建一个变量 num 并 分配 值 1 给它”对于编程新手来说可能比使用“bind”更清楚。跨度>
  • +1 用于单步执行代码并让 OP 在最后尝试回答正确的问题。
【解决方案3】:

for 循环!嗯,我说!

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

【讨论】:

  • 我说:n=10; sum_ = n*(n+1)//2
  • n=10; reduce(lambda x,y: x+y, range(n+1)) 也可以这样说:)
  • 如果你想保留 for 循环并给出一个书呆子提示,也可以只是 theSum = map( lambda x : x + theSum , (num,) )[0]
【解决方案4】:

我也为此苦苦挣扎。

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

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

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

  1. while 循环的第二次迭代:2

  2. while 循环的第三次迭代:3

  3. while 循环的第四次迭代自 4

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

【讨论】:

  • 这似乎更像是一个问题而不是一个答案。您应该单独询问它,也许链接到这个以获得上下文。 (当它在这里时,很少有人看到它。)至于你的问题,这很简单。 return 语句不利于循环。你可以把它拿出来,循环就好了。它所做的是将值提供给调用函数的任何内容。没有它,您的打印也可以工作,但如果您希望执行result = problem1_3(14) 之类的操作,则需要它。没有返回,结果将为无。您可能对stackoverflow.com/q/7129285/5827958 感兴趣
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-07-21
  • 2017-05-02
  • 2021-02-09
  • 1970-01-01
  • 2017-11-09
  • 2020-07-06
  • 2021-11-09
相关资源
最近更新 更多