函数在Python中返回NoneType而不是整数


def function(n):
if n%4==1:
return(n**2)
else:
n += 1
function(n)
# Here for example n=6:
if function(6)%2==0:
print(function(6))
else:
print("Hey!")

这显示了错误不支持%:'NoneType'和'int'的操作数类型. 我试图转换NoneType与int(),但这是告诉我给"str"或其他数据类型作为参数。

当我告诉函数(n)在'if'和'else'条件下返回时,只有这样它才不显示错误。

详细说明Nin17和molbdnilo的评论:

你的函数function(n)应该返回一个整数值。就像在if分支中使用return(n**2)一样,在else分支中返回:

def function(n):
if n % 4 == 1:
return n**2
else:      
return function(n + 1)  # inlined the increased n and do return 
我建议给函数起一个有意义的名字。 像你这样调用自己的函数是一个递归函数。它的关键机制之一是返回一个值。
def function(n):
if n%4==1:
return(n**2)
else:
n += 1
return function(n)
if function(6)%2==0:
print(function(6))
else:
print("Hey!")

在else语句中不返回任何值。把递归函数的return语句放在这里。

最新更新