如何在函数内使用return语句,因为它在脚本中不起作用,但在交互模式下起作用

时间:2019-05-23 17:20:49

标签: return python-3.7

我在linux mint 32bit中使用python 3.7.2 shell。 当我运行def factorial(如代码所示)时,它说“ ”运算符无法应用于“ int”和“ nonetype”,但是我在打印函数中使用了“ ”,但是没有工作。 即使我不能在脚本模式下的函数内部使用return语句,尽管它在交互模式下也可以工作。 帮助我如何在脚本模式下在函数内部使用return语句,请修复我的阶乘代码,使其起作用。

def factorial(n):
    if n == 0:
        results = print(1)
        return results
    else:
        x = factorial(n-1)
        result = print(n*x)
        return result

factorial(4)

使用此命令时出现的错误是

File "/home/Location", line 12, in factorial
    result = print(n*x)
TypeError: unsupported operand type(s) for *: 'int' and 'NoneType'

当我以交互模式运行时,出现了此错误

SyntaxError: inconsistent use of tabs and spaces in indentation

我希望阶乘评估4! = 24,但是在脚本模式下显示了第二个代码,而在交互模式下显示了第三个代码。

2 个答案:

答案 0 :(得分:0)

问题是,您尝试将数字与print类型的NoneType的结果相乘,从而导致错误。您的阶乘函数应该返回一个数字,而不是打印

此代码有效:

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

然后只有这样才能打印结果,例如:

print(factorial(10))

答案 1 :(得分:0)

print(1)将返回NoneType,因此,当您进行递归调用时,实际上是在发送1而不是NoneType。如下图所示分开作业并打印,程序将工作:

def factorial(n):
    if n == 0:
        results = 1
        print(results)
        return results
    else:
        x = factorial(n-1)
        result = n*x
        print (result)
        return result

factorial(4)