十进制到二进制自我挑战

时间:2018-08-03 05:49:42

标签: python-3.x

我试图编写一个小程序,将小数转换为二进制,而不使用内置函数执行此操作。我的程序不会转换超过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

2 个答案:

答案 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