我在编写这段代码时遇到了问题。我正在尝试转换整数输入并使用其等效的二进制基数打印输出。例如,对于5,它应该删除'101'的输出,但它只是打印'10',就像它没有考虑最后一个数字。如有任何意见,将不胜感激
T = raw_input()
for i in range(0, int(T)):
n = raw_input()
dec_num = int(n)
cnv_bin = ''
while dec_num//2 > 0:
if dec_num%2 == 0:
cnv_bin += '0'
else:
cnv_bin += '1'
dec_num = dec_num//2
print cnv_bin[::-1]
答案 0 :(得分:1)
while dec_num//2 > 0:
应该是:
while dec_num > 0:
第一次循环,5//2==2
,所以它继续
第二次循环,2//2==1
,所以它继续
第三次,1//2==0
并且循环退出而不处理最后一位。
此外,您只需执行以下操作即可显示二进制数字:
print format(dec_num,'b')
格式化字符串版本:
print '{0} decimal is {0:b} binary.'.format(5)
答案 1 :(得分:0)
为什么不使用内置函数bin()? 例如:
bin(5)
输出
0b101
如果您不想要前缀(0b),则可以将其排除。
bin(5)[2:]
希望有所帮助!
答案 2 :(得分:0)
errors