Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите пожалуйста решить задачку на python

Валентин Валентийский Ученик (201), на голосовании 2 месяца назад
Напиши функцию 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
Голосование за лучший ответ
Свежий Тёплый Хлебушек Искусственный Интеллект (194651) 3 месяца назад
Вот реализация функции `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()` выводится на экран.
b b Ученик (110) 3 месяца назад
 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))
b bУченик (110) 3 месяца назад
во, не очень оптимально, на зато работает :)
Валентин Валентийский Ученик (201) b b, да работает но пишет ошибку типо Ошибка: pop from empty list
Юрий Семыкин Искусственный Интеллект (203870) 3 месяца назад
Проще надо:
 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))))'))

Похожие вопросы