(完全披露,我正在使用CodeAcademy的Python教程,并使用他们基于Web的IDE。)
def factorial(x):
bang = 1
for num in x:
bang = bang * num
return bang
在java中,这适用于从小于2,147,483,647的数字生成阶乘。我认为它应该在python中工作,但事实并非如此。相反,我得到错误:
“Traceback(最近一次调用最后一次): 在factorial中输入“python”,第3行 TypeError:'int'对象不可迭代“
也许这里有一些我不理解的东西,或者说我的语法错了。我进一步测试并创建了一个名为factorial的独立函数迭代:
def factorial(x):
if x > 2:
return x
else:
return x(factorial(x-1))
这也不起作用,给我一个错误:
“Traceback(最近一次调用最后一次): 在阶乘中归档“python”,第11行 TypeError:'int'对象不可调用“
我是一个python noob,但似乎这两个都应该有效。请告知学习Python语法的最佳方法......
答案 0 :(得分:3)
如果for num in x
是整数,则无法x
。如错误所示,整数不是“可迭代的”。你想要这样的东西:
def factorial(x):
bang = 1
for num in xrange(1, x+1):
bang = bang * num
return bang
xrange
(或range
)将为in
生成必要的数字范围。
答案 1 :(得分:1)
def f(x):
if x < 2:
return 1
else:
return x * f(x - 1)