I am doing an exam paper for revision. It's not a particular question I want help with, but I am unsure to why the program is outputting incorrectly when certain data is entered.
def Binary(Hex):
Result = ''
ErrorFound = False
BinaryEquivalent = ''
EmptyInput=""
for ThisHexDigit in Hex:
if ThisHexDigit in ['1','2','3','4','5','6','7','8','9','0','A','B','C','D','E','F']:
if ThisHexDigit == '0': BinaryEquivalent = '0'
elif ThisHexDigit == '1': BinaryEquivalent = '1'
elif ThisHexDigit == '2': BinaryEquivalent = '2'
elif ThisHexDigit == '3': BinaryEquivalent = '3'
elif ThisHexDigit == '4': BinaryEquivalent = '4'
elif ThisHexDigit == '5': BinaryEquivalent = '5'
elif ThisHexDigit == '6': BinaryEquivalent = '6'
elif ThisHexDigit == '7': BinaryEquivalent = '7'
elif ThisHexDigit == '8': BinaryEquivalent = '8'
elif ThisHexDigit == '9': BinaryEquivalent = '9'
elif ThisHexDigit == 'A': BinaryEquivalent = '10'
elif ThisHexDigit == 'B': BinaryEquivalent = '11'
elif ThisHexDigit == 'C': BinaryEquivalent = '12'
elif ThisHexDigit == 'D': BinaryEquivalent = '13'
elif ThisHexDigit == 'E': BinaryEquivalent = '14'
elif ThisHexDigit == 'F': BinaryEquivalent = '15'
Result = Result + BinaryEquivalent
elif ErrorFound == True:
print('You have made a mistake')
elif Hex==EmptyInput:
print('Empty input, try again.')
return Result
Yes, I know this is an over-complicated piece of code but it is in the exam paper so I have to use it. It came like that, except that all the BinaryEquivalent strings were BinaryEquivalent = '' instead of having numbers inside.
The problem is when I enter two characters when the program is displaying. For example, entering "BBB" will output 11, as will 'BBBBBB'.
try: BinaryEquivalent=str(int(ThisHexDigit, 16)) catch ValueError: print "You have made a mistake."or something similar? (you have to add newlines but a comment cannot handle code formatting properly). Your code is ugly on so many frontiers that I suggest a rewrite.Resultwould be better asresult. See PEP8.