为什么python不返回布尔值

时间:2013-07-04 14:53:01

标签: python python-2.7

我有一个小函数,需要两个整数ab,并检查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(,) 

问题是无论我输入什么,这总是会返回None

但如果我用打印件替换所有返回,那么他们会给出正确的结果,即TrueFalse

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(,) 

为什么会这样?这可能是一个菜鸟问题,但我仍然无法想到它。 感谢

2 个答案:

答案 0 :(得分:8)

您忽略了递归调用的返回值,在那里添加return

else:
    a = a/b
    return is_power(a,b)

如果没有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

答案 1 :(得分:5)

你忘了回到最后一个条款。