0

(完全公开,我正在阅读 CodeAcademy 的 Python 教程,并且正在使用他们基于 Web 的 IDE。)

def factorial(x):
    bang = 1
        for num in x:
            bang = bang * num
    return bang

在 Java 中,这可以从小于 2,147,483,647 的数字生成阶乘。我认为它应该在 python 中工作,但它没有。相反,我得到了错误:

“回溯(最近一次调用最后一次):文件“python”,第 3 行,在阶乘类型错误中:'int' 对象不可迭代”

也许这里有一些我不理解的东西,或者我的语法错误。我进一步测试并创建了一个名为 factorial 的单独函数,该函数迭代:

def factorial(x):
    if x > 2:
        return x
    else:
        return x(factorial(x-1))

这也不起作用,给我错误:

“回溯(最近一次调用最后一次):文件“python”,第 11 行,在阶乘类型错误中:'int' 对象不可调用”

我是一个 python 菜鸟,但似乎这两个都应该工作。请建议学习 Python 语法的最佳方法...

4

2 回答 2

3

for num in x如果x是整数,你不能这样做。正如错误所说,整数不是“可迭代的”。你想要这样的东西:

def factorial(x):
    bang = 1
    for num in xrange(1, x+1):
        bang = bang * num
    return bang

(xrangerange) 将生成必要的数字范围以供in操作。

于 2013-08-15T21:48:16.560 回答
1
def f(x):
        if x < 2:
            return 1
        else:
            return x * f(x - 1)
于 2013-08-16T01:51:41.077 回答