Tkinter 在“”.join() 之后插入输出为 [list]

Tkinter Insert outputting as [list] after "".join()

我正在制作一个 python 程序,它使用 tkinter GUI 将数字转换为二进制。在条目上使用 e.insert 时,它将 return 一个普通字符串: 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]

您不能在列表上使用 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"