Вам нужно изменить while (2**exponent) == 0
на while exponent >= 0
, иначе вы никогда не попадете внутрь или снаружи цикла while, потому что 2**exponent
всегда> 0, несмотря на уменьшение exponent
на каждой итерации.Также нет необходимости в global exponent, binary
;просто поместите их в функцию.
Обратите внимание, что при выборе exponent = 4
значение userInput
должно быть ограничено диапазоном [0, 2 ** (экспонента + 1) - 1] = [0, 31].
Вот альтернативный алгоритм (при условии, что userInput
является положительным целым числом):
def decToBin(userInput):
if userInput == 0:
return '0'
binary = ''
while userInput > 0:
binary = str(userInput % 2) + binary
userInput //= 2
return binary