использование else в базовой программе при получении ошибки: unindent не соответствует ни одному внешнему уровню отступа - PullRequest
0 голосов
/ 25 августа 2018

Когда я запускаю следующий код, я получаю сообщение об ошибке: «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 голосов
/ 25 августа 2018

Причина, по которой вы получаете ошибку "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 любит видеть синтаксис в логическом блоке. Кроме того, следующая ошибка, с которой вы столкнетесь, будет заключаться в использовании вложенных операторов if внутри предложений else.

Чтобы выполнить оператор else if в Python, вам нужно использовать синтаксис 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!')
0 голосов
/ 25 августа 2018

Используйте elif вместо else.Вы должны использовать оператор else, когда операторы if и 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')

Кроме того, если вы хотите указать блок кода, вы должны сделать отступ для каждой строкиблок на ту же сумму, которая обычно составляет четыре пробела.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...