Я пытаюсь создать функцию, которая принимает значение, представленное в десятичном формате, и преобразует его в значение, представленное двоичным.
Предполагая, что аргумент всегда является целым числом:
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
не может бежать дважды?
Если это не домашнее задание, почему не просто bin(x)[2:]?
@QuangHoang предположительно, да. Первый раз n = 2 и number -= 2. Второй раз n = 1 и number -= 1. Тогда number == 0
@JohnColeman Это домашнее задание.






Вы назначаете 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 обновляется.
Может ли
numberбыть0, еслиx=3?