尝试返回列表中循环的值,但无法使用return返回,但print会显示它

时间:2016-12-29 08:45:34

标签: python-2.7

def dectoBin(n):
    for num in n:
        if num == 0:
            return ''
        else:
            return dectoBin(num/2) + str(num % 2)

请有人帮忙吗?

2 个答案:

答案 0 :(得分:0)

您的代码应该是这样的:

def dectoBin(num):
    if num == 0:
        return ''
    else:
        return dectoBin(num/2) + str(num % 2)

这就是递归的工作原理。你不需要代码中的for循环。

修改

def dectoBin(num):
    if num == 0:
        return '0'
    elif num == 1:
        return '1'
    else:
        return dectoBin(num/2) + str(num % 2)

for i in range(257):
    print(dectoBin(i))

我已经更新了代码,因此也可以考虑0。另请注意,如果您想要转换为256并且包括256,则需要在257范围内。

答案 1 :(得分:0)

您的循环永远不会超过n中的第一个值,因为您return。另外,您的递归调用会传递一个数字,而不是列表。

最明确的解决方案是让一个函数通过列表,转换值并收集结果,然后只需转换一个数字。