为什么我的十进制到二进制转换器不能在python中工作?

时间:2014-10-17 17:12:09

标签: python binary decimal converter

这是我的代码:

dec=int(input("lol"))
a=[]
while dec>0:
    remainder=dec%2
    if remainder>0:
        a.append(1)
        dec=dec-remainder
    else:
        a.append(0)
        dec=dec-remainder
bn=''.join(str(e) for e in a)
bn=bn[::-1]
print(binary)

运行时,我输入我想要的整数,之后什么都没有出现。

1 个答案:

答案 0 :(得分:0)

1)错字:你的最后一行肯定是print(bn)而不是print(binary)

2)循环挂起:你从来没有在dec上进行右移>> /除以二,所以你的循环永远不会结束。 由于您要进行转换,因此您不需要明确减去余数,它只会向右移位(请参阅注释a)。 您可以执行以下任一操作:

dec = dec >> 1
dec >>= 1 # too cryptic, since >> is a rare operator

2b)错误:你需要 prepend ,而不是追加abn的连续数字。

无论如何,这里完全重写了紧凑性;我们可以免除列表a并将当前直接添加到字符串bn,我们不需要if-else子句:

dec=int(input("lol"))
bn = ""
while dec > 0:
    bn = str(dec % 2) + bn # prepend, not append!
    dec = dec >> 1

print(bn)

(它不会删除前导零,但这是一个简单的字符串/正则表达式替换作业。)

注意a)顺便说一句,在if remainder==0子句中减去余数= 0是不必要的。无论如何,dec = dec - remainder行可能是常见的代码,而不是if-else。可以a.append(dec % 2))。