Для проверки правильности скобочного выражения с четырьмя видами скобок в Python, можно использовать стек. Я предлагаю следующую реализацию:
- Создадим модуль для операций со стеком.
- Напишем основную программу, которая будет использовать этот модуль.
Шаг 1: Модуль для стека (stack.py)
Создайте файл stack.py с следующим содержимым:
class Stack:
def __init__(self):
self.items = []
def is_empty(self):
return len(self.items) == 0
def push(self, item):
self.items.append(item)
def pop(self):
if not self.is_empty():
return self.items.pop()
return None
def peek(self):
if not self.is_empty():
return self.items[-1]
return None
def size(self):
return len(self.items)
Шаг 2: Основная программа (main.py)
Создайте файл main.py с следующим содержимым:
from stack import Stack
def is_balanced(expression):
stack = Stack()
brackets = {'(': ')', '{': '}', '[': ']', '<': '>'}
for char in expression:
if char in brackets.keys(): # Если открывающая скобка
stack.push(char)
elif char in brackets.values(): # Если закрывающая скобка
if stack.is_empty():
return False
top = stack.pop()
if brackets[top] != char:
return False
return stack.is_empty()
# Пример использования
if __name__ == "__main__":
expression = input("Введите скобочное выражение: ")
if is_balanced(expression):
print("Скобочное выражение правильно сбалансировано.")
else:
print("Скобочное выражение неправильно сбалансировано.")
Объяснение кода:
Stack: Мы создаем класс Stack для реализации стека. Он содержит методы для добавления (
push), удаления (pop), проверки верхнего элемента (peek), проверки на пустоту (is_empty) и получения размера стека (size).is_balanced: Эта функция принимает строку выражения и проверяет, сбалансированы ли скобки. Она использует словарь для сопоставления открывающих и закрывающих скобок.
Основной блок: В конце программы мы запрашиваем у пользователя ввод скобочного выражения и проверяем его правильность.
Теперь вы можете запустить main.py, ввести выражение, и программа сообщит, правильно ли оно сбалансировано. Удачи в учёбе!
