0

我正在做复习试卷。这不是我需要帮助的特定问题,但我不确定为什么在输入某些数据时程序输出不正确。

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

是的,我知道这是一段过于复杂的代码,但它在试卷中,所以我必须使用它。就是这样,除了所有的 BinaryEquivalent 字符串BinaryEquivalent = ''里面没有数字。

问题是当我在程序显示时输入两个字符。例如,输入“BBB”将输出 11,“BBBBBB”也是如此。

4

3 回答 3

2

您应该将return语句排除在for循环之外。

于 2012-04-10T12:00:37.150 回答
0

return语句在for循环内,因此只进行了一次迭代,它应该是:

for ThisHexDigit in Hex:
    #code

return result

并不是:

for ThisHexDigit in Hex:
    #code
    return result
于 2012-04-10T12:01:27.557 回答
0

仅当您的十六进制数是单个十六进制数字时,您的解决方案才有效。如果要转换更长的数字,则必须进行一些更正。

  1. Result可以是简单的int,以0开头
  2. 所有 BinaryEquivalent 都应该是整数,所以使用BinaryEquivalent = 0
  3. 在 for 循环中,您必须增加结果,使用:Result = 16 * Result + BinaryEquivalent
于 2012-04-10T12:09:13.663 回答