我正在制作一个使用tkinter GUI将数字转换为二进制的python程序。在条目上使用e.insert时,它将返回一个普通字符串: 0101010011 如 [0,1,0,1 ...]
将数字转换为二进制的函数。我知道存在bin()替代方案,我只是想创建自己的替代方案。
def dec2bin(decnum):
binarylist = []
while (decnum > 0):
binarylist.append(decnum % 2)
decnum = decnum // 2
binarylist.reverse()
binarylist = str(binarylist)
return "".join(binarylist)
按下tkinter gui中的按钮时调用的函数,该函数旨在用二进制输出替换输入框的文本之一。
def convert():
decimal = entrydec.get()
decimal = int(decimal)
entrybin.delete(0, END)
entrybin.insert(0, dec2bin(decimal))
我希望输出010101,但实际输出是[0,1,0,1,0,1]
答案 0 :(得分:2)
您不能在列表上使用str()
-str([0, 1, 0, 0])
来获取带有字符串的列表-["0", "1", "0", "0"]
您可以使用列表理解:
binarylist = [str(x) for x in binarylist]
或map()
:
binarylist = map(str, binarylist)
或者添加到列表中时,必须将数字0
,1
转换为字符串:
binarylist.append( str(decnum % 2) )
然后您可以使用join()
def dec2bin(decnum):
binarylist = []
while (decnum > 0):
binarylist.append( str(decnum % 2) ) # <-- use str()
decnum = decnum // 2
binarylist.reverse()
#binarylist = str(binarylist) # <-- remove it
return "".join(binarylist)
dec2bin(12)
结果:
"1100"