-7

16 進数から 2 進数へのコンバーターのプログラムを作成する必要があります。私はそれが正常に動作しています。ただし、空の文字列が入力された場合は、計画通りにいかないことだけがあります。無効なデータが入力された場合、何も入力されていない場合を除いて、エラーが発生し、何も生成されません。エラーは発生しませんが、何もしません。

空の文字列に対してエラーを発生させるにはどうすればよいですか?

def Binary(Hex):
    Result = ''
    ErrorFound = False
    BinaryEquivalent = ''
    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
        else:
            ErrorFound = True
            print('You have made a mistake')
    return Result
4

2 に答える 2

1
if not hex_string:
    raise ValueError('Cannot convert empty string')
于 2012-04-04T14:48:38.860 に答える
0

I have often found myself asking if the String has any length to it

emptyInput = ""
if len(emptyInput): #returns 0 and will fail 
#but as the comments remind me
if emptyInput: #also returns false

now you have a few options from here. Simply adding an else and moving on, raising an error, or ask for new input. It really is hard to advise the best course without some of your code.

于 2012-04-04T14:45:37.037 に答える