why doesn't python return booleans

后端 未结 2 1552
慢半拍i
慢半拍i 2021-01-29 05:34

I have this small function that takes two integers a and b and checks if a is b raised to some exponent. This is the code.

相关标签:
2条回答
  • 2021-01-29 06:07

    You are ignoring the return value of the recursive call, add a return there:

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

    Without the return statement there, your function just ends and returns None instead. The return value of the recursive call is otherwise ignored.

    With the return statement, your code works:

    >>> 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
    
    0 讨论(0)
  • 2021-01-29 06:23

    You forgot to return on the last else clause.

    0 讨论(0)
提交回复
热议问题