十进制到二进制函数,Python

时间:2018-12-17 19:04:26

标签: python

我正在尝试创建一个接受以十进制表示的值并将其转换为二进制表示的值的函数。

假设参数始终是整数:

import math

def binary_decimal_converter(x):

    binary_representation = 0
    number = x

    while number != 0:
        n = 1
        while x not in range(n,n*2):
            n *= 2
        binary_representation += 10**(int(math.log(n,2)))
        number -= n

    return binary_representation

问题:

如果x在下面的列表中,则程序正常运行。

[1, 2, 4, 8, 16, 32, 64, 128....]

但是如果使用其他任何数字,程序将陷入不可中断的循环。

为什么循环:

while number != 0: #line 24  

不能运行两次?

1 个答案:

答案 0 :(得分:1)

您要分配number = x,然后同时使用两者:

import math

def binary_decimal_converter(x):
    binary_representation = 0
    number = x

    while number != 0:
        n = 1
        while x not in range(n,n*2): # CHANGE x TO number
            n *= 2
        binary_representation += 10**(int(math.log(n,2)))
        number -= n

    return binary_representation

如果在指定的行上将x更改为number,它将起作用。 x未更新,number正在更新。