我正在尝试学习基本的python,我似乎无法使用while循环返回值。我正在从我正在阅读的指南中复制语法,但是当我运行它时它似乎不起作用。我可能有不同的版本,我不确定。
无论如何我只是乱搞并得到了这段代码
def fact(x):
count = 1
sum = 0
while count <= x:
sum = count * sum
count + 1
else:
return sum
我甚至不知道这是否正确计算阶乘,我不在乎,我只是想让它返回一个值。怎么了?为什么我不能使用退货?当我用
替换return时,我不确定是什么问题 display,
它仍然不起作用。
答案 0 :(得分:4)
在while
循环中,您实际上并未将count
设置为count + 1
- 您只是声明count + 1
,它不会重新分配变量:
In [1]: count = 1
In [2]: count + 1
Out[2]: 2
In [3]: count
Out[3]: 1
您需要使用count += 1
之类的内容。此外,您将遇到以下问题:
sum = count * sum
由于它最初为0,因此无论计数是多少,您每次都将其重置为0。如果仍然适用于您,您可以尝试将其设置为1,但您可能需要仔细考虑您正在尝试做的事情。使用了带有else
的{{1}}语句,但您可以在满足while
条件后退出块并以此方式返回变量。
答案 1 :(得分:2)
尝试:
def fact(x):
count = 1
sum = 1
while count <= x:
sum *= count
count += 1
return sum
虽然这可能更好:
def fact(x):
prod = 1
for i in range(1, x+1):
prod *= i
return prod
如果你在0
开始计数变量,那么0
就会被0 * n == 0
取出,因为所有n
都会else
。
{{1}}在这里也完全无用。
答案 2 :(得分:2)
def fact(x):
count = 1
sumi = 1
while count <= x:
sumi = count * sumi
count = count + 1
return sumi
这里有些错误:
return
语句。循环完成后,它将返回sumi 答案 3 :(得分:1)
所以我不知道你正在使用python的结构,但是你不能单独调用else。你永远不会回来,因为你没有判断值来测试else语句。它需要附加到if语句才能工作。
例如,您可能希望执行以下操作:
if x == 1:
return blah
else:
return foo
我也不确定,但代码可能根本不运行。我不知道显示器是什么,但我很确定它不是你想要的。
请阅读:http://docs.python.org/2/tutorial/controlflow.html
这将帮助您了解控制结构,以便您可以按自己的意愿进行循环。