Ошибка отступа Python после оператора else

Я попытался изменить интервал во всем файле, чтобы каждый отступ состоял из 4 пробелов, а не табуляции, но я все равно получаю недопустимую синтаксическую ошибку в инструкции else в push (). В случае необходимости я использую возвышенный текст 3 для разработки. Любые предложения будут оценены, спасибо.

from Stack import Stack

class stackOfPlates:

    cap = 4
    def _init_(self):
        self.plates = []

    def isEmpty(self):
        return self.plates == []

    def push(self, item):
        p = Stack()
        if ((self.isEmpty()) or (self.plates[len(self.plates)-1].size() == cap)):
            p.push(item)
            self.plates.append(p)
        else:
            self.plates[len(self.plates)-1].push(item)

    def pop(self):
        temp = self.plates[len(self.plates)-1].pop()
        if (self.plates[len(self.plates)-1].isEmpty()): self.plates.pop()
        return temp

    def peek(self):
        return self.plates[len(self.plates)-1].peek()

    def size(self):
        return len(self.plates)

Спасибо @OdatNurd, что решил мою проблему, должно быть, что-то мне не хватало.

Почему вы выделяете новый стек каждый раз, когда вызываете push? (И почему вы вообще определяете stackOfPlates, а не просто используете Stack.Stack? Кажется, вы реализуете стек стеков.

chepner 13.04.2018 22:04

Я копирую и вставляю этот код, и у меня нет синтаксической ошибки, может быть, в вашем источнике есть скрытый символ? попробовать открыть в vim?

sietse85 13.04.2018 22:04

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

Primusa 13.04.2018 22:05

Возможный дубликат Что делать с «неожиданным отступом» в Python?

MooingRawr 13.04.2018 22:05

Кажется, для меня компилируется нормально; поскольку вы используете Sublime, я предлагаю щелкнуть строку состояния, где написано Spaces: 4, и выбрать опцию Convert indentation to Spaces.

OdatNurd 13.04.2018 22:06

@chepner, я думаю, он пытается вручную реализовать мультистек, в котором каждый стек компонентов имеет максимальный размер (cap). Ожидается, что класс предоставит требуемую абстракцию - это может быть популярный вопрос на собеседовании Cracking the Coding Interview.

Spade 13.04.2018 22:12

Для меня тоже нет ошибок.

Josep Valls 13.04.2018 22:15

Поскольку вы решили свою проблему после преобразования отступов в пробелы, похоже, что у вас были смешанные пробелы и вкладки. В Sublime Text вы можете легко обнаружить это, выделив весь код и наблюдая, есть ли в отступе 4 точки (т.е. 4 пробела) или сплошная линия (например, табуляция).

Autonomous 13.04.2018 22:34

Магический метод класса init использует только один _, тогда как их должно быть два. Итак, _init_ должен быть __init__

mustachioed 13.04.2018 23:31

@MustacheMoses большое спасибо, я получил сообщение об ошибке после исправления проблемы с отступом, и это, в дополнение к перемещению емкости в конструктор, исправило это для меня

wAnder 14.04.2018 00:26
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
10
104
0

Другие вопросы по теме