这是我的代码:
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)
运行时,我输入我想要的整数,之后什么都没有出现。
答案 0 :(得分:0)
1)错字:你的最后一行肯定是print(bn)
而不是print(binary)
2)循环挂起:你从来没有在dec上进行右移>>
/除以二,所以你的循环永远不会结束。
由于您要进行转换,因此您不需要明确减去余数,它只会向右移位(请参阅注释a)。
您可以执行以下任一操作:
dec = dec >> 1
dec >>= 1 # too cryptic, since >> is a rare operator
2b)错误:你需要 prepend ,而不是追加a
或bn
的连续数字。
无论如何,这里完全重写了紧凑性;我们可以免除列表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)
)。