十进制到二进制Python R2L格式
我正在尝试使用递归将整数转换为R2L二进制格式的列表。我一直得到一个错误,int对象是不可编辑的。这是我的密码十进制到二进制Python R2L格式,python,recursion,binary,Python,Recursion,Binary,我正在尝试使用递归将整数转换为R2L二进制格式的列表。我一直得到一个错误,int对象是不可编辑的。这是我的密码 def decimalToBinary(x): list1 = [] if x == 0: return [] elif x > 1: list1 += 0 return decimalToBinary(x//2) else: list1 += 1 return lis
def decimalToBinary(x):
list1 = []
if x == 0:
return []
elif x > 1:
list1 += 0
return decimalToBinary(x//2)
else:
list1 += 1
return list1
我不明白这个问题,请帮忙
更新:将代码更改为:
def decimalToBinary(x):
list1 = []
if x == 0:
return []
elif x > 1:
list1 += [0]
return decimalToBinary(x//2)
else:
list1 += [1]
return list1
如果我输入8,它将返回
[1]
,它应该返回[0,0,0,1]
,正如我写的,首先,你不应该总结int
和list
。
其次,没有理由在递归中实现它,您可以这样实现它:
def decimalToBinary(x):
binary_rep = []
while x!=0:
binary_rep.append(str(x%2))
x=int(x/2)
binary_rep.reverse()
return binary_rep
print(decimalToBinary(50))
print(int(''.join(decimalToBinary(50)),2))
输出:
['1', '1', '0', '0', '1', '0']
50
110010
第二种方法是将int的字符串表示形式转换为二进制,如下所示:
n=50
print(bin(n).replace("0b", ""))
输出:
['1', '1', '0', '0', '1', '0']
50
110010
递归是必须实现的吗?您可以使用premade
bin()
函数
def decimal_to_binary(x):
return bin(x)[2:]
print(decimal_to_binary(12))
将打印1100
或者,使用list()函数:
def decimal_to_binary(x):
return list(bin(x)[2:])
print(decimal_to_binary(12))
打印:
['1','1','0','0']
如果您想将项附加到列表中,请使用。附加,不要在int-ans列表之间使用+,我尝试过使用它,但它只返回[1],出于某种原因,它不会返回任何内容请查看我的答案,我想这就是您要查找的内容。