我遇到了将十进制数转换为二进制数的两种不同函数的问题。我希望二进制数以列表的形式返回,每个数字之间都有逗号。即>>>二进制(19)返回[1,0,0,1,1] 我的第一个函数说'int太大而无法转换为float',第二个函数返回字符串中的二进制数,而不是带逗号的列表,而且我很难改变它。 第一个功能:
def Binary(n):
i=1
s=0
while n>0:
rem=n%2
s=s+(i*rem)
n=n/2
i=i*10
return s
我的第二个函数返回一个字符串:
def Binary2(n):
binstr = ''
if n == 0: return '0'
while n > 0:
binstr = str(n % 2) + binstr
n = n >> 1
return binstr
我只需要一个函数来输出我正在寻找的结果,所以我感谢任何帮助,谢谢:)
我也知道有更简单的方法可以做到这一点,但我更喜欢坚持使用while循环
答案 0 :(得分:1)
def binary(n):
binlist = [int(x) for x in bin(n)[2:]]
return binlist
如果你真的想使用while
循环:
def binary(n):
binary = list()
while n > 0:
binary.insert(0, n%2)
n /= 2
return binary
答案 1 :(得分:-1)
如果你从未创建一个list
,你期望得到什么?
首先,您应该将返回值初始化为空列表[]
。
然后使用append
(在末尾添加每个新项目)或insert
(将其添加到开头)。