循环用于计算产品(乘法)?

时间:2014-05-02 01:39:16

标签: python while-loop

我似乎无法弄清楚这一点。我应该编写一个while循环来打印1到50之间数字的乘积(乘)。这是我的代码:

def main():
    x = 1
    total = 0
    while x <= 50:
       total = total * x
       x*=1
  print(total)

main ()

然而,Python并没有打印任何东西。谁能告诉我我做错了什么?

3 个答案:

答案 0 :(得分:1)

x = 1
while x <= 50:
   x*=1

这些语句导致无限循环,因为将x乘以1将永远不会改变它。数学上,x * 1 -> x

此外,如果你试图将数字乘以1到50,你就不会想要这个:

total = 0
for some condition:
    total = total * something

因为total 永远保持为零。数学上,x * 0 -> 0

用于获取数字1到50的乘积的正确伪代码(看起来非常像 Python)是:

product = 1
for number = 1 through 50 inclusive:
    product = product * number

更改代码以匹配它需要两件事:

  • total应该从一开始。
  • 你应该在循环中添加一个到x而不是相乘。

答案 1 :(得分:0)

x * = 1导致无限循环

答案 2 :(得分:0)

你的问题是你有一个永不退出的while循环:

>>> import time
>>> x = 5
>>> while x < 10:
...     x*=1
...     print x
...     time.sleep(1)
... 
5
5
5
5
5
5
...

您的x*=1x值乘以1,实际上什么都不做。因此,您在while为50之前调用x循环,但x永远不会更改。相反,您可能需要x+=1将1 添加到x

在您的代码中,您还想更改total = 0,因为我们没有添加,我们正在相乘。如果total为0,我们实际上正在调用0*1*2*3*4...,并且因为0的任何时间都是0,所以这将变得无用。因此,我们将total设置为1

def main():
    x = 1
    total = 1 #Start off at 1 so that we don't do 0*1*2*3*4...
    while x <= 50:
       total = total * x
       x+=1
    print(total)

main()

运行如下:

>>> def main():
...     x = 1
...     total = 1 #Start off at 1 so that we don't do 0*1*2*3*4...
...     while x <= 50:
...        total = total * x
...        x+=1
...     print(total)
... 
>>> main()