Python:我的Return语句总是返回None

时间:2016-11-06 00:52:10

标签: python return

这是一个能够将二进制数作为字符串并将其转换为十进制数的函数。出于某种原因,此函数始终返回None,我无法理解为什么会发生这种情况。如果有人能给我一个解释,我将不胜感激。

total = 0
power = 0
def binaryToDecimal(binaryString):
    global total, power

    n = len(binaryString) - 1

    if n < 0:
        return total
    else:
        if binaryString[n] == '1':
        total += (2 ** power)
    power += 1
    binaryToDecimal(binaryString[:-1])

2 个答案:

答案 0 :(得分:1)

最后一行必须是return binaryToDecimal(binaryString[:-1])。目前您从最后一次通话中返回total,但之前的所有通话都没有返回任何内容。

答案 1 :(得分:0)

而不是递归调用,只需要像下面的for循环一样

def binaryToDecimal(binaryString):
    total=0
    # strip of 0b if there is any
    binaryString = binaryString.lstrip('0b')
    n=len(binaryString)
    for i in range(n):
        # index from lsb bit to msb
        if binaryString[n-1-i] == '1':
            total += (2 ** i)
    return total

或者,建议只使用内置int函数的python

def binaryToDecimal(binaryString):
    return int(binaryString, 2)