Этот совет должен вам помочь ... Он не совсем двоичный, но он близок.Дайте мне знать, если вам понадобится дополнительная помощь
0 -> - -> -
1 -> - -> -
10 -> 0 -> 1
11 -> 1 -> 2
100 -> 00 -> 11
101 -> 01 -> 12
110 -> 10 -> 21
111 -> 11 -> 22
1000 -> 000 -> 111
1001 -> 001 -> 112
1010 -> 010 -> 121
1011 -> 011 -> 122
1100 -> 100 -> 211
1101 -> 101 -> 212
1110 -> 110 -> 221
1111 -> 111 -> 222
Редактировать: мне не понравилось, как я заказал столбцы, поэтому я поменял местами 2 и 3
Подход Python
Первое, что нам нужно сделать, это создать двоичные строки
в Python, это можно сделать с помощью bin(number)
Однако это вернет число в виде 0b101
Мы можем легко убрать0b с самого начала, сообщая python, что нам не нужны первые два символа, но нам нужны все остальные.Код для этого: bin(number)[2:]
левая сторона: говорит, что начинается с двух пробелов, а поскольку правая сторона пуста, переходите к концу
Теперь у нас есть двоичные числа, но нам нужно убратьпервый номер.К счастью, мы уже знаем, как убрать начальные символы, поэтому измените эту строку на bin(number)[3:]
.
Все, что осталось сделать, это добавить по одному на каждую позицию в числе.Чтобы сделать это, давайте создадим новую строку и добавим к ней каждый символ из нашей другой строки, увеличив его на единицу.
# we already had this
binary = bin(user_in + 1)[3:]
new = ""
for char in binary:
# add to the string the character + 1
new += str(int(char) + 1)
И все готово.Этот фрагмент будет преобразован из десятичной в любую систему.Вы можете заметить одну вещь: это решение будет смещено на единицу (2 будет 1, 3 будет 2), мы можем исправить это, просто добавив единицу к пользовательскому вводу, прежде чем мы начнем.
окончательный код с некоторымиудобство (цикл while и оператор print)
while True:
user_in = int(input("enter number: "))
binary = bin(user_in + 1)[3:]
new = ""
for char in binary:
new += str(int(char) + 1)
print(user_in, "\t->\t", binary, "\t->\t", new)