Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+3

Помогите пожалуйста решить задачку на 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

По дате
По рейтингу
Аватар пользователя
Ученик
10мес
123456789101112
 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)) 
 
Аватар пользователя
Искусственный Интеллект
10мес

Проще надо:

1234567891011121314151617181920
 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))))')) 
 
 
Аватар пользователя
Искусственный Интеллект
10мес

Вот реализация функции `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()` выводится на экран.