Функция Python для преобразования двоичной цифры в шестнадцатеричное - PullRequest
1 голос
/ 21 марта 2019

У меня другая проблема с программой, которая преобразует двоичные числа в шестнадцатеричные. У меня есть программа, которая работает хорошо, но отображает шестнадцатеричную цифру в маленьких заглавных буквах, хотя ответ должен быть в заглавных буквах, как показано в вопросе и в примере

Это мой код

def binaryToHex(binaryValue):
#convert binaryValue to decimal

decvalue = 0
for i in range(len(binaryValue)):
    digit = binaryValue.pop()
    if digit == '1':
        decvalue = decvalue + pow(2, i)

#convert decimal to hexadecimal
hexadecimal=hex(decvalue)
return hexadecimal
def main():
  binaryValue = list(input("Input a binary number: "))
  hexval=binaryToHex(binaryValue)

  hexa=h1.capitalize() #Tried to use capitalize() function but didn't worl
  print("The hex value is",hexa[ 2:4]) #strips off the first 2 digits
main()

Это то, что отображается при запуске

Ответы [ 3 ]

1 голос
/ 21 марта 2019

Поскольку это довольно справедливо - вот ответ, который довольно пифоничен и, надеюсь, послужит каноническим справочным материалом для будущих вопросов.

Прежде всего, просто сохраните ввод в виде строки:

binary_value = input('Enter a binary number: ')

Затем используйте встроенный int с аргументом base, равным 2 (что означает интерпретацию строки как двоичные цифры), чтобы получить целое число из вашей строки:

number = int(binary_value, 2)
# 10001111 -> 143

Затем вы можетеиспользуйте f-string, чтобы напечатать ваш номер с указателем формата X, что означает «в шестнадцатеричном виде с заглавными буквами и без префикса»:

print(f'The hex value is {number:X}')

В таком случае вся ваша база кода будет выглядеть примерно так:с двумя функциями и вашими соглашениями об именах):

def binaryToHex(binaryValue):
    number = int(binaryValue, 2)
    return format(number, 'X')

def main():
    binaryValue = input('Enter a binary number: ')
    print('The hex value is', binaryToHex(binaryValue))

main()
0 голосов
/ 21 марта 2019

просто сделай одну функцию ...

def binaryToHex():
    binval = input('Input a binary number : ')
    num = int(binval, base=2)
    hexa = hex(num).upper().lstrip('0X')
    print(f'The hex value is {hexa}')
0 голосов
/ 21 марта 2019

Одна ошибка, которую вы сделали, это то, что h1 не существует в коде, и все же он присутствует.

.upper () в строке изменяет ее на прописные

def main():
    binaryValue = list(input("Input a binary number: "))
    hexval=binaryToHex(binaryValue)
    hexa=hexval.upper() 
    print("The hex value is",hexa[ 2:4]) #strips off the first 2 digits

выход:

Input a binary number: 10001111
The hex value is 8F
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...