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

1

Когда я запускаю следующий код, я получаю сообщение об ошибке: "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!')
  • 4
    Пожалуйста, отформатируйте код с помощью кнопки {}
  • 0
    Пожалуйста, добавьте полное сообщение трассировки к вопросу. Он показывает строку по ошибке, и это облегчает выявление проблемы.
Показать ещё 2 комментария
Теги:
if-statement
indentation
syntax-error

2 ответа

4

Используйте elif а не else. Вам нужно else выражение, чтобы что-то сделать, if утверждения if и elif оцениваются как false.

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

Причина, по которой вы получаете сообщение об ошибке "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!')

Ещё вопросы

Сообщество Overcoder
Наверх
Меню