我试图编写一个小程序,将小数转换为二进制,而不使用内置函数执行此操作。我的程序不会转换超过12287的任何东西。12288只会吐出一个无限循环。我哪里出问题了?为什么我不能超过12287?
while (number != 1) or (number != 0):
a = number // 2
b = number % 2
number = a
if b == 0:
output = "0" + output
if number == 1:
output = "1" + output
break
else:
output = "1" + output
答案 0 :(得分:0)
对于12288,number
最终变为0
。这意味着while
条件始终为True
。
请注意,b
变为0
,因此数字将保持在0
。
答案 1 :(得分:0)
您只需要更改以下条件:
while (number != 1) or (number != 0):
收件人:
while number != 0:
除此之外,您的代码看起来还可以。这是相同基本思想的简化版本:
output = ""
while number:
number, b = divmod(number, 2)
output = str(b) + output