在VS Code中运行python代码时出现缩进错误

时间:2019-11-14 14:36:13

标签: python

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))

当我运行上述python程序时,Visual Studio Code给我以下错误:

  

[正在运行] python -u“ e:\ College Work \ HND Cyber   安全性\编程\ Python \块1 \算法和程序\未完成   工作(要完成的程序和文档)\ Ceaser密码程序   (需要执行程序和文档)\ Caeser Shift Program.py“

     

文件“ e:\ College Work \ HND网络安全\ Programming \ Python \ Block   1 \算法和程序\未完成的工作(程序和文档   完成)\ Ceaser密码程序(程序和文档   )\ Caeser Shift Program.py“

     

第15行       返回input()                    ^ TabError:缩进中的制表符和空格不一致使用

     

[Done]在0.145秒内以代码= 1退出了

我尝试几次更改缩进,但没有运气。谁能解释这个问题可能是什么,我可以怎么解决?

编辑:我在下面的答案中找到了解决我的问题的方法。我要感谢所有停下来帮助我的人。

6 个答案:

答案 0 :(得分:1)

在Visual Studio Code中,执行CTRL + SHIFT + P,然后输入“缩进”。您将看到用于转换缩进的选项:Convert Indentation to SpacesConvert Indentation to Tabs。选择一个并坚持使用您选择的缩进。

答案 1 :(得分:1)

这应该解决它:

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))

还初始化之前使用了变量numtranslated。我也已经修复了。

答案 2 :(得分:0)

这是一个非常普遍的问题。您需要使用4 white spaces而不是tab。但是请确保您保持一致,并在任何地方都遵循这种风格。同样,您可以完全使用tabs,但不能将white spacestabs混合使用,如错误-句法Re悔的注释中所述。

答案 3 :(得分:0)

代码在制表符和空格的用法上必须保持一致。整个代码可以使用4个空格,或者整个代码可以使用tab,但不能同时使用两者。

答案 4 :(得分:0)

Python最独特的功能之一是它使用缩进来标记代码块。 if语句,循环和函数都缩进四个空格或一个制表符,这是Python的典型缩进量。

答案 5 :(得分:0)

是的,有些东西没有像最后一个return translated那样正确缩进 我修复了它,您可以差异检查差异,当您与缩进不一致时,python不喜欢它

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))