


Помогите пожалуйста решить задачку на python
Напиши функцию correct_brackets(), которая принимает строку и проверяет, правильно ли в ней расставлены скобки. Нужно, чтобы первыми шли открывающие скобки, и для каждой из них была закрывающая.
Используй команду return с такими значениями:
True — расстановка верная;
False — расстановка не верная.
Вызови функцию с данными, которые вводит пользователь.
вот моя не рабочая версия
def correct_brackets(s):
stack = []
for char in s:
if char == '(':
stack.append(char)
elif char == ')':
if not stack:
return False
stack.pop()
return len(stack) == 0
s = input("")
print(correct_brackets(s)
Пример 1
Ввод Вывод
print()
True
Пример 2
Ввод Вывод
int(input()
False
def correct_brackets(s):
stack = ''
for char in s:
if char == '(' or char == ')':
stack += char
while '()' in stack:
stack = stack.replace('()', '', 1)
return len(stack) == 0
s = input("")
print(correct_brackets(s))
Проще надо:
def correct_brackets(s):
res=0
for char in s:
match char:
case ')':
res -=1
if res < 0: # закрывает неоткрытую скобку
return False
case '(':
res +=1
return res == 0
# test
print(correct_brackets(')ab( '))
print(correct_brackets('(ab) '))
print(correct_brackets('abc(g(ef(h)'))
print(correct_brackets('abc(g(ef(h))'))
print(correct_brackets('abc(g)(ef(h))'))
print(correct_brackets('abc(g(ef(h))))'))
Вот реализация функции `correct_brackets()` на Python: ```python def correct_brackets(brackets_str): stack = [] brackets_map = { '(': ')', '[': ']', '{': '}' } for bracket in brackets_str: if bracket in brackets_map: stack.append(bracket) elif bracket in brackets_map.values(): if not stack or bracket != brackets_map[stack.pop()]: return False return len(stack) == 0 # Запрос ввода от пользователя user_input = input("Введите строку со скобками: ") # Вызов функции с введенными пользователем данными if correct_brackets(user_input): print("Расстановка скобок верная") else: print("Расстановка скобок неверная") ``` Объяснение: 1. Функция `correct_brackets()` принимает строку `brackets_str` в качестве аргумента. 2. Создается пустой список `stack`, который будет использоваться для хранения открывающих скобок. 3. Создается словарь `brackets_map`, который сопоставляет открывающие скобки с их соответствующими закрывающими скобками. 4. Цикл проходит по каждому символу в строке `brackets_str`: - Если символ является открывающей скобкой, он добавляется в стек `stack`. - Если символ является закрывающей скобкой, проверяется, есть ли в стеке соответствующая открывающая скобка. Если нет или не совпадает, функция возвращает `False`. 5. После завершения цикла, если в стеке остались элементы, это означает, что не для всех открывающих скобок были найдены закрывающие, и функция возвращает `False`. 6. Если стек пуст, это означает, что все открывающие скобки были правильно закрыты, и функция возвращает `True`. 7. Пользователю предлагается ввести строку со скобками, и результат вызова функции `correct_brackets()` выводится на экран.