我正在编写一个将整数转换为二进制的程序,除了一件事之外,一切都运行良好。我将二进制数存储在一个列表中,因此我想使用该join()
函数将列表连接在一起。这也很有效,但是由于列表存储为整数,我必须将一个空字符串与二进制列表连接起来(同时将每个数字转换为字符串)。顺便说一句,这与其余代码无关,因为我已经用一个独立的程序对此进行了试验,但我仍然得到相同的结果。代码如下:
import backwards
class Binary(object):
binary=[1,2,4,8,16,32,64,128,256]
answer=[]
def __init__(self,enter):
self.enter=enter
if self.enter>256:
self.alternative()
elif self.enter<=256:
self.calculate()
def add(self,a,b):
a.append(b)
def clear(self):
Binary.binary=[]
def calculate(self):
start=len(Binary.binary)
start-=1
on=1
off=0
while start>-1:
if self.enter<Binary.binary[start]:
self.add(Binary.answer,off)
start-=1
elif self.enter>=Binary.binary[start]:
self.add(Binary.answer,on)
self.enter-=Binary.binary[start]
start-=1
def alternative(self):
current_max=256
while Binary.binary[len(Binary.binary)-1]<self.enter:
current_max*=2
self.add(Binary.binary,current_max)
self.calculate()
def __str__(self):
converted=""
for i in Binary.answer:
converted+=str(Binary.answer[i])
joined=''.join(converted)
final_answer=backwards.back(joined)
return joined
a=int(input("Enter the decimal number you want to convert to binary: "))
b=Binary(a)
print(b)
后退模块是我创建的一个基本上反转字符串的函数。基本上,问题是如果前两个二进制数以 0 开头,它也会将每隔一个 1 打印为 0(因此打印出 00000000)。我特意返回了连接变量来证明这一点(final_answer 变量就像我说的那样反转了字符串)。如前所述,它与其余代码无关,因为当我自己执行此操作时会得到相同的结果。那么如何在不神秘地将 1 转换为 0 的情况下使其正确打印出来,但同时确保列表仍然被加入。