我有这个函数,一旦输入为“ x”,它应该返回1。如果第一个输入为“ y”,然后下一个输入为“ x”,为什么为什么返回None?
def func():
a = input('x or y\n')
if a == 'x':
return 1
else:
func()
print(func())
这是在命令行中写的:
x or y
y # My input
x or y
x # My input
None
为什么它返回None而不是1?
答案 0 :(得分:0)
函数始终在return语句旁边提供输出。您需要返回函数作为递归的输出。
def func():
a = input('x or y\n')
if a == 'x':
return 1
else:
return func()
print(func())
将使您的函数递归。最好的问候...
答案 1 :(得分:0)
在else语句中,您正在调用该函数,但未从该函数返回。 因此,如果该函数进入else语句,则该函数不返回任何内容。
def func():
a = input('x or y\n')
if a == 'x':
return 1
else:
return func()
print(func())
这样写可以解决问题,因为您将从func
返回计算出的值。而且该函数将始终返回某些内容,而与输入无关。