Вы печатаете каждый элемент (1 или 0) в цикле.Вы должны объединить все 1/0 и повернуть вспять в конце.
Обратите внимание при программировании циклов.Вы пытаетесь установить значение, которое строится по итерациям в конкретной итерации.Когда ваш скрипт вычисляет значение code
(например, 1
), он переворачивает это число и переходит к следующей итерации, повторяя процесс.
Решением будет создание обратной строки на всех итерациях,постепенно.Следующий код определяет пустую строку и объединяет 0 или 1 перед предыдущим результатом.
Пример:
# Initialize reverse_code variable
reverse_code = ""
while number != 0:
if number % 2 == 0:
code = "0"
new_number = number //2
number = new_number
else:
code = "1"
new_number = number //2
number = new_number
reverse_code = code + reverse_code
print(reverse_code)
If number = 10
:
1010
Пояснение
Когда цикл while
начинает повторяться, он делит число на 2, и мы хотим обратить результат деления на обратный, чтобы получить двоичный код.Вместо вычисления результата мы можем создать результат во время расчета.Для этого мы определяем reverse_code
как пустую строку.В каждой итерации мы будем помещать новый элемент (1 или 0) перед строкой, получая обратную строку.
reverse_code
значения в итерациях, когда number=10
:
Итерация 0: code
= 0 reverse_code
= code
+ reverse_code
= "0" + "" ="0"
Итерация 1: code
= 1 reverse_code
= code
+ reverse_code
= "1" + "0" = "10"
....
Итерация N:
code
= 1 reverse_code
= code
+ reverse_code
= "1" + "010" = "1010"
ДругойВопрос к комментарию - это ваша оптимизация кода.Просмотр вашего кода, если в другом случае, если у вас есть new_number
и number
присваивание переменных, на которые не влияли предыдущие переменные code
.Вы можете извлечь общий фактор и упростить код.Код должен быть следующим:
# Initialize reverse_code variable
reverse_code = ""
while number != 0:
# Calculate the `code` value
if number % 2 == 0:
code = "0"
else:
code = "1"
# Putting this here simplifies duplicate instructions
new_number = number //2
number = new_number
# Putting 0 or 1 (code) before semi-built string (reverse_code)
reverse_code = code + reverse_code
print(reverse_code)