Python ошибка отступа с операторами if / elif - PullRequest
0 голосов
/ 07 мая 2020

У меня в программе три списка. «библиотека» содержит большой объем текста, «ссылки» содержит список слов, которые следуют друг за другом в ссылках, а «возможные» просматривает каждый раз, когда каждый элемент в «ссылках» появляется вместе, поэтому он может получить следующее слово.

Программа получает длину «ссылок», поэтому она знает, сколько элементов нужно проверить в «библиотеке», но фрагмент кода, который проверяет, есть ли в ссылках 2 элемента, возвращает «неожиданный отступ», а я не могу понять почему. Даже если я уберу отступ, он вернет ошибку. Если он не имеет отступа, возникает ошибка, потому что он нарушает остальную часть кода.

Ниже вся функция. Вся программа работает за исключением ошибки отступа.

def possibles_compile():
    compile = 'yes'
    global temp_possibles
    temp_possibles = []
    while compile != 'no':
        if len(reference) == 1:
            for i in range(library_length):
                try:
                    if library[i] == reference[0]:
                        try:
                            temp_possibles.append(library[i + 1])
                        except IndexError:
                            temp_possibles.append(library[0])
        elif len(reference) == 2:
            for i in range(library_length):
                if library[i] == reference[0]:
                    try:
                        if library[i + 1] == reference[1]:
                            try:
                                temp_possibles.append(library[i + 2])
                            except IndexError:
                                temp_possibles.append(library[0])
                    except IndexError:
                        if library[0] == reference[1]:
                                temp_possibles.append(library[1])
        elif len(reference) == 3:
            for i in range(library_length):
                if library[i] == reference[0]:
                    try:
                        library[i + 1] == reference[1]:
                    except IndexError:
                        if library[0] == reference[1]:
                            if library[1] == reference[2]:
                                    temp_possibles.append(library[2])
                    else:
                        try:
                            if library[i + 2] == reference[2]:
                                try:
                                    temp_possibles.append(library[i + 3])
                                except IndexError:
                                    temp_possibles.append(library[0])
                        except IndexError:
                            if library[0] == reference[2]:
                                temp_possibles.append(library[1])
        elif len(reference) == 4:
            for i in range(library_length):
                if library[i] == reference[0]:
                    try:
                        library [i + 1] == reference[1]:
                    except IndexError:
                        if library[0] == reference[1]:
                            if library[1] == reference[2]:
                                if library[2] == reference[3]:
                                    temp_possibles.append(library[3])
                    else:
                        try:
                            library[i + 2] == reference[2]:
                        except IndexError:
                            if library[0] == reference[2]:
                                if library[1] == reference[3]:
                                    temp_possibles.append(library[2])
                        else:
                            try:
                                if library[i + 3] == reference[3]:
                                    try:
                                        temp_possibles.append(library[i + 4])
                                    except IndexError:
                                        temp_possibles.append(library[0])
                            except IndexError:
                                if library[0] == reference[3]:
                                    temp_possibles.append(library[1])
        compile = 'no'
    return 'done'

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Перед строкой:

if library[i] == reference[0]:

Вы создали обработчик исключений, но поместили только предложение try, и каждый try должен иметь связанный с ним , кроме . Поэтому я предлагаю вам изменить свой код на:

try:
    if library[i] == reference[0]:
    try:
        temp_possibles.append(library[i + 1])
    except IndexError:
        temp_possibles.append(library[0])
except Exception:
    pass # put the exception code you want to executed when handling this exception here

Или вы можете удалить это предложение try, если оно не нужно.

Также будьте осторожны со следующими строками:

library[i + 1] == reference[1]:
library [i + 1] == reference[1]:
library [i + 1] == reference[1]:

Вы используете двоеточие там, где не должны (если только вы не хотите создать условие или предложение итерации).

0 голосов
/ 07 мая 2020

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

...