@cntfrgthr

Почему не работает условие?

Необходимо проверить правильно ли закрываются скобки, задачка с литкода. Решил реализовать при помощи стека, алгоритм работает неправильно и выдает False, когда должно быть True. Непонятным магическим образом игнорируя условие
elif stack.get_elem == '(' and brackets[i] == ')':
(Можете проверить в дебаггере проблема именно в этом)

Вопрос следующий: Почему игнорируется условие?

Реализация стека:
class Stack:
    def __init__(self):
        self.stack = []

    def add_elem(self, elem):
        self.stack.append(elem)

    def rem_elem(self):
        try: 
            return self.stack.pop()
        except:
            pass
    
    def get_elem(self):
        return self.stack[len(self.stack) - 1]
    
    def get_stack(self):
        return self.stack

Реализация условия:
from test1 import Stack

def bracket_balance(brackets):
    stack = Stack()

    for i in range(len(brackets)):
        if brackets[i] == '(':
            stack.add_elem(brackets[i])
        elif stack.get_elem == '(' and brackets[i] == ')':
            stack.rem_elem()
        elif stack.get_elem == '[' and brackets[i] == ']':
            stack.rem_elem()
        elif stack.get_elem() == '{' and brackets[i] == '}':
            stack.rem_elem()
        else:
            return False


    if stack.get_stack == []:
        return True
    else:
        return False
    


brackets = '()()()'

print(bracket_balance(brackets))
  • Вопрос задан
  • 148 просмотров
Решения вопроса 1
Maksim_64
@Maksim_64
Data Analyst
Программа, как я понял должна проверять закрыты ли все скобки в строке. Почему методы класса ты пытаешься вызываешь без скобок например tack.get_elem, где скобки потерял? оператор () где потерял? и так у тебя в трех местах включая if stack.get_stack == []:
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы