我似乎无法弄清楚这一点。我应该编写一个while循环来打印1到50之间数字的乘积(乘)。这是我的代码:
def main():
x = 1
total = 0
while x <= 50:
total = total * x
x*=1
print(total)
main ()
然而,Python并没有打印任何东西。谁能告诉我我做错了什么?
答案 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*=1
将x
值乘以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()