конвертер денарий/двоичный код не может конвертировать двоичный код

#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 для двоичного кода, то это вызовет ошибку. Я бы посоветовал вам также добавить обработку исключений.