views:

99

answers:

2

Error Details:

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

Below is the Code:

# 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))
+3  A: 
  1. Do not use += to build strings. Use ''.join(mylist)
  2. Do as it asks: give it an indented block.
Nick T
+1  A: 

From An Informal Introduction to Python, "The body of the loop is indented: indentation is Python’s way of grouping statements."

If you are familiar with C or Java, you might recognize this syntax:

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

Python does this w/ indentations:

if ...
    #do something

That said, the rest of your code seems to understand this point. That you were unable to recognize this when the error occurred means either you got very lucky or you're using someone else's code.

I hope, for your sake, that this isn't a homework assignment, because most universities take a very dim view of plagiarism.

RevolXadda
this seems like a pretty silly problem for an undergrad even
Gary
I can easily see this in an intro to programming class.
RevolXadda
His prof should wave him off from entering this career. Regrettably software development requires some self-teaching. Software test on the other hand...
Nick T