在append()和reverse()之后返回一个列表

时间:2014-04-26 14:39:14

标签: python list recursion append reverse

我是 python(2.7.3)的新手,我试图编写一个将给定的十进制数转换为二进制数的程序。 为此,我编写了一个函数,它接受十进制数和一个空列表,将数字除以2将其余部分附加到列表中,并使用剩余商重复该函数,直到商为0。

def convert_to_bin(dec_num,list):
    quo = dec_num/2 # val is the quotient when dividing by 2
    rest = dec_num%2 # rest is the rest when dividing by 2
    list.append(rest)
    if (quo==0):
        list.reverse()
        print list
        return list
    else:
        convert_to_bin(quo,list)
bin_list = [] # initialize list for binary entries
dec_num = 83 # decimal number that is to be converted into binary       
bin_list = convert_to_bin(dec_num,bin_list)
print bin_list

到目前为止,该功能可以正常工作,我无法找到一种在调用函数之后实际返回列表的方法 - 而是总是得到"无& #34;作为退货声明。 我究竟做错了什么?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

您忘记返回递归调用的结果:

else:
    return convert_to_bin(quo,list)

递归调用返回调用者,而不是顶级框架。因此,convert_to_bin()函数再次调用convert_to_bin() 忽略了嵌套调用的返回值,而是在函数结束时返回None