0
MAX_KEY_SIZE = 26

def getMode():
    while True:

            print('Do you wish to encrypt or decrypt a message?')
            mode = input().lower()
    if mode in 'encrypt e decrypt d'.split():
        return mode
    else:
            print('Enter either "encrypt" or "e" or "decrypt" or "d".')

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

def getKey():
    key = 0
    while True:
            print('Enter the key number (1-%s)' % (MAX_KEY_SIZE))
            key = int(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()
            key = getKey()
            print('Your translated text is:')
            print(getTranslatedMessage(mode, message, key))

When I run the above python program, Visual Studio Code gives me the following error:

[Running] python -u "e:\College Work\HND Cyber Security\Programming\Python\Block 1\Algorithms and Programs\Unfinished Work (Program and Documentation to finish)\Ceaser Cipher Program (program and documentation to do)\Caeser Shift Program.py"

File "e:\College Work\HND Cyber Security\Programming\Python\Block 1\Algorithms and Programs\Unfinished Work (Program and Documentation to finish)\Ceaser Cipher Program (program and documentation to do)\Caeser Shift Program.py"

line 15 return input() ^ TabError: inconsistent use of tabs and spaces in indentation

[Done] exited with code=1 in 0.145 seconds

I have tried changing the indentation a few times with no luck. Can anyone explain what the issue could be and what I could do to solve it?

2
  • 2
    Check your spacing. Make sure you are being consistent with EACH indent. I can easily tell you improperly indented most of your code. Commented Nov 14, 2019 at 14:41
  • While people fixing your code indentation for you to copy paste will solve your problem, using the Convert function in Visual Studio (see my answer) will help you do that correction yourself in the future easily. Commented Nov 14, 2019 at 14:46

5 Answers 5

2

This should fix it:

MAX_KEY_SIZE = 26

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

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

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

def getTranslatedMessage(mode, message, key):
    translated = ''
    num = 0
    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()
key = getKey()
print('Your translated text is:')
print(getTranslatedMessage(mode, message, key))

Also the variables num and translated were used before they were initialized. I have fixed those too.

Sign up to request clarification or add additional context in comments.

Comments

2

In Visual Studio Code do CTRL + SHIFT + P and type in "indentation". You will see options for converting indentation: Convert Indentation to Spaces or Convert Indentation to Tabs. Select one and stick with your chosen indentation.

Comments

0

The code needs to be consistent in the usage of tabs and spaces. The entire code can use 4 white spaces or the entire code can use tab, but not a mix of both.

Comments

0

This is a very common problem. You need to use 4 white spaces instead of using a tab. But make sure you are consistent and follow this style everywhere. Similarly, you can use tabs all the way but do not mix white spaces with the tabs as stated in the comment by Error - Syntactical Remorse.

4 Comments

Technically you can use tabs. You just need to be consistent. The OPs issue is inconsistency on how much they indent for each block.
@Error-SyntacticalRemorse Thanks for the clarification. I did not know that, I always solved this problem by using white spaces.
Added four white spaces as you suggested, but I am now getting the following error: File "e:\College Work\HND Cyber Security\Programming\Python\Block 1\Algorithms and Programs\Unfinished Work (Program and Documentation to finish)\Ceaser Cipher Program (program and documentation to do)\Caeser Shift Program.py", line 15 return input() ^ IndentationError: unexpected indent
Can you update your code with the latest change? @JoshuaLankamp
0

Yeah A few things weren't indented correctly like the last return translated I fixed it you can diff check for the difference, python doesn't like it when you are inconsistent with indentations

MAX_KEY_SIZE = 26


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


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


def getKey():
    key = 0
    while True:
        print('Enter the key number (1-%s)' % (MAX_KEY_SIZE))
        key = int(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()
key = getKey()
print('Your translated text is:')
print(getTranslatedMessage(mode, message, key))

2 Comments

Check your indenting inside the if statements and while loops.
Yeah also just saw it haha I get confused with the spaces but it should be good now

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.