我正在尝试创建一个接受以十进制表示的值并将其转换为二进制表示的值的函数。
假设参数始终是整数:
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
不能运行两次?
答案 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
正在更新。