Python 2.7 尝试返回列表中循环的值,但可以';无法使用return获取它,但print会显示它

Python 2.7 尝试返回列表中循环的值,但可以';无法使用return获取它,但print会显示它,python-2.7,Python 2.7,有人能帮忙吗?您的代码应该是这样的: def dectoBin(n): for num in n: if num == 0: return '' else: return dectoBin(num/2) + str(num % 2) 这就是递归的工作原理。您的代码中没有for循环 编辑: def dectoBin(num): if num == 0: return '' el

有人能帮忙吗?

您的代码应该是这样的:

def dectoBin(n):
    for num in n:
        if num == 0:
            return ''
        else:
            return dectoBin(num/2) + str(num % 2)
这就是递归的工作原理。您的代码中没有for循环

编辑:

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

我已经更新了代码,因此也可以考虑0。还要注意的是,如果您想要转换到256,您需要在范围内转换到257

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


最清晰的解决方案是一个函数遍历列表,转换值并收集结果,另一个函数仅转换单个数字。

您在这里想做什么?我正在编写一个函数,将以10为基数的数字列表转换为二进制。但是不能使用return循环遍历列表中的每个值。你似乎认为n既是一个可数又是一个数字。n意味着接受一个列表。然后将列表中的每个值转换为二进制数。请容忍我。我刚开始学习python问题是我不能使用返回来遍历列表,因为它没有超过第一个值。我还有别的办法吗,Thanks@DeepSpace你在骗我吗?它正在工作。我刚刚测试过
dectoBin(8)
gives
1000
,dectoBin(15)gives
1111
等等。抱歉,错过了这个问题是用Python 2.7标记的,其中
/
是楼层划分。在Python3上,必须使用
/
或将结果转换为
int
@Nurzhan。我如何实现一个代码,该代码运行在一个数字范围内,比如范围(0,256),并给出单独的二进制转换。感谢you@DeepSpace我如何实现一个代码,该代码运行在一个数字范围内,比如说范围(0,256),并提供单独的二进制转换。感谢you@Dolapo如果有帮助,你可以接受答案,这样问题就可以结束了。
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))