如何处理IndentationError?

时间:2010-10-07 17:02:48

标签: python syntax indentation

我收到以下错误:

File "imp.py", line 55
    key = get Key()
      ^
IndentationError: expected an indented block

使用以下代码:

# Caesar Cipher

MAX_KEY_SIZE = 26

def getMode():
    while True:
        print('Do you wish to encrypt or decrypt or brute force a message?')
        mode = raw_input().lower()
        if mode in 'encrypt e decrypt d brute b'.split():
            return mode
        else:
            print('Enter either "encrypt" or "e" or "decrypt" or "d" or "brute" or "b".')

def getMessage():
    print('Enter your message:')
    return raw_input()

def getKey():
    key = 0
    while True:
        print('Enter the key number (1-%s)' % (MAX_KEY_SIZE))
        key = int(raw_input())
        if (key >= 1 and key <= MAX_KEY_SIZE):
            return key

def getTranslatedMessage(mode, message, key):
    if mode[0] == 'd':
        key = -key
    translated = ''

    for symbol in message:
        if symbol.isalpha():
            num = ord(symbol)
            num += key

            if symbol.isupper():
                if num > ord('Z'):
                    num -= 26
                elif num < ord('A'):
                    num += 26
            elif symbol.islower():
                if num > ord('z'):
                    num -= 26
                elif num < ord('a'):
                    num += 26

            translated += chr(num)
        else:
            translated += symbol
    return translated

mode = getMode()
message = getMessage()
if mode[0] != 'b':
key = getKey()
print('Your translated text is:')
if mode[0] != 'b':
print(getTranslatedMessage(mode, message, key))
else: 
    for key in range(1, MAX_KEY_SIZE + 1): 
        print(key, getTranslatedMessage('decrypt', message, key))

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

  1. 请勿使用+=来构建字符串。使用''.join(mylist)
  2. 请问:给它一个缩进的块。

答案 1 :(得分:2)

An Informal Introduction to Python开始,“循环体是缩进的:缩进是Python对语句进行分组的方式。”

如果您熟悉C或Java,您可能会认识到这种语法:

if (...)
{
    //do something
}

Python做了这个w /缩进:

if ...
    #do something

那就是说,你的其余代码似乎都明白这一点。发生错误时你无法识别这个意味着你很幸运或者你正在使用别人的代码。

我希望,为了你的缘故,这不是一项家庭作业,因为大多数大学对抄袭都持晦涩的看法。