Python 阶乘程序出错

Python program for factorial coming up with an error

我试图编写一个基本的阶乘程序以在 python 中进行一些练习,但我为以下代码想出了这个错误。任何帮助将不胜感激。

def factorial(x):
    x = raw_input(":")
    if x == 0:
        return 1
    else: 
        return x * factorial(x-1)

当我 运行 这个程序通过终端时,它给我以下错误:

**第 1 行:意外标记 '('

附近的语法错误

第 1 行:def factorial(x)**

除了缩进错误,还需要将这一行移出函数,

x = raw_input(":"),

或者你必须在递归的每一层都输入一个数字。

使用递归函数你不应该在函数内部使用raw_input,它会降低函数的整个逻辑,所以输入的东西必须在递归函数之外完成。另一件你需要注意的事情是 raw_input() 函数总是 returns 一个 String 所以我们明确需要将它转换为 Integer 类型,你就完成了。

def factorial(x):
    if x == 0 or x==1:
        return 1
    else: 
        return x * factorial(x-1)

number = int(raw_input(":"))
print factorial(number)