我有这个小函数,它接受两个整数a,b并检查是否a被b提升到某个指数.这是代码.
def is_power(a,b):
if not a%b==0:
return a%b==0
elif a/b==1:
return a/b==1
else:
a = a/b
is_power(a,b)
print is_power(,)
Run Code Online (Sandbox Code Playgroud)
问题是,None无论我输入什么,这总是会返回.
但是如果我用打印替换所有返回,那么它们会给出正确的结果,即True或False.
def is_power(a,b):
if not a%b==0:
print a%b==0
elif a/b==1:
print a/b==1
else:
a = a/b
is_power(a,b)
is_power(,)
Run Code Online (Sandbox Code Playgroud)
为什么会这样?这可能是一个菜鸟问题,但我仍然无法想到它.谢谢
你忽略了递归调用的返回值,在return那里添加:
else:
a = a/b
return is_power(a,b)
Run Code Online (Sandbox Code Playgroud)
如果没有return那里的陈述,你的函数就会结束并返回None.否则将忽略递归调用的返回值.
使用该return语句,您的代码可以运行:
>>> def is_power(a,b):
... if not a%b==0:
... return a%b==0
... elif a/b==1:
... return a/b==1
... else:
... a = a/b
... return is_power(a, b)
...
>>> print is_power(10, 3)
False
>>> print is_power(8, 2)
True
Run Code Online (Sandbox Code Playgroud)