#python #binary #decimal #converters
Вопрос:
Я пытался создать конвертер двоичных чисел в денарий и наоборот. Хотя перевод динара в двоичный код работает нормально, двоичный код в денарий просто выдает тот же ввод, что и я… Мой код выглядит так:
a = int(input("Enter 1 for denary into binary, 2 for binary into denary, or 3 to quit..."))
b = []
c = []
while a != 3:
if a == 1:
print("You have selected denary to binary.")
b = int(input("Enter the denary number you want to convert into binary: "))
if type(b) == int:
print("Equivalent binary number: ", bin(b))
a = int(input("Enter 1 for denary into binary, 2 for binary into denary, or 3 to quit..."))
elif type(b) != int:
print("sorry, your input is not convertible to binary")
else:
a = int(input("Enter 1 for denary into binary, 2 for binary into denary, or 3 to quit..."))
elif a == 2:
print("You have selected binary to denary.")
c = int(input("Enter the binary number you want to convert to denary: "))
if type(c) == int:
cbin = bin(c)
print("Equivalent denary number: ", int(cbin, 2))
a = int(input("Enter 1 for denary into binary, 2 for binary into denary, or 3 to quit..."))
elif type(c) != int:
print("sorry, your input is not convertible to denary")
else:
a = int(input("Enter 1 for denary into binary, 2 for binary into denary, or 3 to quit..."))
else:
print("invalid input, please try again.")
a = int(input("Enter 1 for denary into binary, 2 for binary into denary, or 3 to quit..."))
Мой вывод выглядит так:
Введите 1 для перевода динара в двоичный код, 2 для перевода двоичного кода в двоичный код или 3, чтобы выйти…1
Вы выбрали денарий в двоичный код. Введите денарное число, которое вы хотите преобразовать в двоичный код: 25
Эквивалентное двоичное число: 0b11001
Введите 1 для перевода динара в двоичный код, 2 для перевода двоичного кода в двоичный код или 3, чтобы выйти…2
Вы выбрали двоичный код в денарий. Введите двоичное число, которое вы хотите преобразовать в денарий: 11001
Эквивалентное число денариев: 11001
… любой совет был бы замечательным, я использую int(X, 2) для преобразования двоичного кода в денарий, но, как вы можете видеть, это просто не работает.
Комментарии:
1. Здесь
int(input("Enter the binary number you want to convert to denary: "))
вы анализируете число как десятичное. Используйтеbase
аргумент здесь при вызовеint
, чтобы проанализировать его как двоичный.
Ответ №1:
Здесь int(input("Enter the binary number you want to convert to denary: "))
вы анализируете число как десятичное. Передайте 2 в качестве второго аргумента int
здесь, чтобы проанализировать его как двоичный.
n = int(input("Enter the binary number you want to convert to denary: "), 2)
print("Equivalent denary number:", n)
Вам не нужно преобразовывать число в десятичное при печати: по умолчанию числа печатаются в десятичном формате.
Кстати, все ваши type(c) == int
проверки излишни. Вы уже преобразовали входные данные в int, поэтому, если не возникло исключение, c
это определенно int.
Ответ №2:
a = int(input("Enter 1 for denary into binary, 2 for binary into denary, or 3 to quit..."))
b = []
c = []
while a != 3:
if a == 1:
print("You have selected denary to binary.")
b = int(input("Enter the denary number you want to convert into binary: "))
if type(b) == int:
print("Equivalent binary number: ", bin(b))
a = int(input("Enter 1 for denary into binary, 2 for binary into denary, or 3 to quit..."))
elif type(b) != int:
print("sorry, your input is not convertible to binary")
else:
a = int(input("Enter 1 for denary into binary, 2 for binary into denary, or 3 to quit..."))
elif a == 2:
print("You have selected binary to denary.")
c = int(input("Enter the binary number you want to convert to denary: "))
if type(c) == int:
cbin = str(c)
print("Equivalent denary number: ", int(cbin, 2))
a = int(input("Enter 1 for denary into binary, 2 for binary into denary, or 3 to quit..."))
elif type(c) != int:
print("sorry, your input is not convertible to denary")
else:
a = int(input("Enter 1 for denary into binary, 2 for binary into denary, or 3 to quit..."))
else:
print("invalid input, please try again.")
a = int(input("Enter 1 for denary into binary, 2 for binary into denary, or 3 to quit..."))
Эта строка вызывала проблемы:
cbin = bin(c)
Измените его на этот:
cbin = str(c)
Ваша программа не обрабатывает исключения любого типа, например, если пользователь вводит: 112 для двоичного кода, то это вызовет ошибку. Я бы посоветовал вам также добавить обработку исключений.