在基本程序中使用else得到错误:unindent与任何外部缩进级别都不匹配

时间:2018-08-25 16:00:28

标签: python if-statement syntax-error indentation

当我运行以下代码时,出现错误:“ IndentationError:unident与任何外部缩进级别都不匹配”。

我在做什么错?我在下面包含了我的代码以供参考:

file=open('csquetionseasy.txt','r')

print(file.read(432))

answersinputeasy=input('enter the letter responding to the correct answer for all 3 questions e.g. BBB')

if answersinputeasy==('BAA'):
    print('you got 3/3!')

else:
    if answersinputeasy==('BAB'):
        print('2/3!')
        else:
            if answersinputeasy==('BBB'):
                print('1/3!')
                else:
                    if answersinputeasy==('ABB'):
                        print('0/3!')
                        else:
                            if answersinputeasy==('AAB'):
                                print('1/3!')
                                else:
                                    if answersinputeasy==('AAA'):
                                        print('2/3!')
                                        else:
                                            if answersinputeasy==('ABA'):
                                                print('1/3!')

2 个答案:

答案 0 :(得分:4)

使用elif而不是else。当elseif语句的值为false时,您需要elif语句才能执行某些操作。

if answersinputeasy==('BAA'):
    print('you got 3/3!')
elif answersinputeasy==('BAB'):
    print('2/3!')
elif answersinputeasy==('BBB'):
    print('1/3!')
elif answersinputeasy==('ABB'):
    print('1/3!')
elif answersinputeasy==('AAA'):
    print('2/3!')
elif answersinputeasy==('ABA'):
    print('1/3!')
else:
    print('Invalid Input')

此外,如果要指示代码块,则必须将代码块的每一行缩进相同的数量,通常为四个空格。

答案 1 :(得分:1)

出现错误"IndentationError: unident does not match any other indentation level"的原因是因为您将选项卡链接在一起以创建嵌套的逻辑语句(以伪代码):

if <condition>:
    #then do something
        else if <condition>:
            #then do something else
                else if <condition>
                    #then do something further else

这不是Python喜欢在逻辑块中查看语法的方式。此外,您将要遇到的下一个错误将是在else子句中使用嵌套的if语句。

要在Python中运行else if语句,您将要使用语法elif:,后跟缩进行,如果满足该条件,则要执行的代码(用伪代码表示) ):

if <condition>:
    #then do something
elif <condition>:
    #then do something else
elif <condition>: 
    #then do something further else

另一个最佳实践是,如果您不打算进行任何进一步的验证,则应在条件块中包含显式的else子句,并附带一堆elif语句从用户那里得到的字符串上。假设用户传递了XYZ。它们不会满足您已定义的任何条件,因此,代码将继续超出此逻辑块的底部(这可能不是好事)。在下面的代码中,我添加了一个示例,以显示显式else子句的外观,但是最终由您决定什么对您的应用程序有意义:

file=open('csquetionseasy.txt','r')

print(file.read(432))

answersinputeasy=input('enter the letter responding to the correct answer for all 3 questions e.g. BBB')

if answersinputeasy==('BAA'):
    # Code to be executed following an if-statement must be indented by 4 spaces:
    print('you got 3/3!')
elif answersinputeasy==('BAB'):
    # Code to be executed following an elif-statment (else-if) must be indented by 4 spaces:
    print('2/3!')
elif answersinputeasy==('BBB'):
    print('1/3!')
elif answersinputeasy==('ABB'):
    print('0/3!')
elif answersinputeasy==('AAB'):
    print('1/3!')
elif answersinputeasy==('AAA'):
    print('2/3!')
elif answersinputeasy==('ABA'):
    print('1/3!')
# Else clause would provide a default condition that executes if none of the prior cases are met.
else:
    # Code following an else statment must be indented by 4 spaces:
    #Example of a default Else-block entry:
    print('Wasn\'t able to parase your entry into a valid answer!')