Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/190: Рейтинг темы: голосов - 190, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 09.05.2019
Сообщений: 9

Скобочная последовательность

22.06.2020, 12:46. Показов 42876. Ответов 13

Студворк — интернет-сервис помощи студентам
Правильная скобочная последовательность
Рассмотрим последовательность, состоящую из круглых, квадратных и фигурных скобок. Программа должна определить, является ли данная скобочная последовательность правильной.

Пустая последовательность является правильной. Если A — правильная, то последовательности (A), [A], {A} — правильные. Если A и B — правильные последовательности, то последовательность AB — правильная.

Входные данные

В единственной строке записана скобочная последовательность, содержащая не более 100000 скобок.

Выходные данные

Если данная скобочная последовательность правильная, то программа должна вывести строку yes, иначе строку no.

Примеры

([])
yes


{)
no
Мой код -
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
skb=input()
isError='yes'
mass=[]
for i in skb:
    if '[' == i == '(' or i == '{':
        mass.append(i)
    elif mass:
        if ']' == i and mass[-1] == '[':
            mass.pop()
        elif ')' == i and mass[-1] == '(':
            mass.pop()
        elif '}' == i and mass[-1] == '{':
            mass.pop()
        else:
            isError = 'no'
    else:
         isError='no'
print(isError)
не проходит 8 тестов, в чем ошибка?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.06.2020, 12:46
Ответы с готовыми решениями:

Скобочная последовательность
Здравствуйте! Можете пожалуйста помочь решить с использованием функции def без return) Правильной скобочной последовательностью...

Правильная скобочная последовательность
Правильной скобочной последовательностью называется строка, состоящая только из символов «скобки» (открывающих "(" и закрывающих...

Правильная скобочная последовательность
Всем привет! У меня проблема... Правильной скобочной последовательностью называется строка, состоящая только из символов «скобки»...

13
Эксперт Python
 Аватар для dondublon
4648 / 2068 / 366
Регистрация: 17.03.2012
Сообщений: 10,168
Записей в блоге: 6
22.06.2020, 14:58
Цитата Сообщение от timofeevi Посмотреть сообщение
'[' == i == '('
Что вы хотели этим сказать? Очевидно, это условие всегда будет False.
2
291 / 193 / 104
Регистрация: 14.11.2017
Сообщений: 489
22.06.2020, 15:38
Если без стека можно вот так:
Python
1
2
3
4
5
6
7
8
def is_correct_brackets(text):
    while '()' in text or '[]' in text or '{}' in text:
        text = text.replace('()', '')
        text = text.replace('[]', '')
        text = text.replace('{}', '')
 
    # Возвращаем True, если text с пустой строкой
    return not text
Если со стеком можно вот так:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def is_correct_brackets(expr) : 
    stack = [] 
    for char in expr: 
        if char in ["(", "{", "["]: 
            stack.append(char) 
        else:  
            if not stack: 
                return False
            current_char = stack.pop() 
            if current_char == '(': 
                if char != ")": 
                    return False
            if current_char == '{': 
                if char != "}": 
                    return False
            if current_char == '[': 
                if char != "]": 
                    return False
    if stack: 
        return False
    return True
3
Эксперт по компьютерным сетямЭксперт Pascal/Delphi
 Аватар для TAVulator
4191 / 1292 / 237
Регистрация: 27.07.2009
Сообщений: 3,962
22.06.2020, 16:48
Классическая задача на стек..
Вот мой вариант через строку:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def checksq(s):
  stack = ''
  op,cl = '([{ )]}'.split()
  for c in s:
    if c in op:
      stack += c
    elif c in cl:
      if stack == '':
        return False
      elif op[cl.index(c)] == stack[-1]:
        stack = stack[:-1]
  return stack == ''    
 
a = '{}()(){{{{}}[][][]}}'
b = '{}()(){{{{}}[][][]}}())'
 
print(f'В сроке "{a}" скобки расставлены {"" if checksq(a) else "не "}правильно.')
print(f'В сроке "{b}" скобки расставлены {"" if checksq(b) else "не "}правильно.')
Output:
В сроке "{}()(){{{{}}[][][]}}" скобки расставлены правильно.
В сроке "{}()(){{{{}}[][][]}}())" скобки расставлены не правильно.
0
3 / 3 / 0
Регистрация: 29.05.2020
Сообщений: 33
27.06.2020, 13:09
zhurban, TAVulator, а можно весь код, пожалуйста
0
Эксперт по компьютерным сетямЭксперт Pascal/Delphi
 Аватар для TAVulator
4191 / 1292 / 237
Регистрация: 27.07.2009
Сообщений: 3,962
27.06.2020, 17:48
EHOTuK, это и есть весь код
1
3 / 3 / 0
Регистрация: 29.05.2020
Сообщений: 33
29.06.2020, 16:56
TAVulator, но он пшет ошибку в процессе выполнения
0
Эксперт по компьютерным сетямЭксперт Pascal/Delphi
 Аватар для TAVulator
4191 / 1292 / 237
Регистрация: 27.07.2009
Сообщений: 3,962
30.06.2020, 07:55
EHOTuK, какую?
0
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071
30.06.2020, 20:03
Цитата Сообщение от TAVulator Посмотреть сообщение
EHOTuK, какую?
Цитата Сообщение от TAVulator Посмотреть сообщение
сроке
Может строке?)

Добавлено через 2 минуты
EHOTuK, попробуй такой код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def checksq(s):
  stack = ''
  op,cl = '([{ )]}'.split()
  for c in s:
    if c in op:
      stack += c
    elif c in cl:
      if stack == '':
        return False
      elif op[cl.index(c)] == stack[-1]:
        stack = stack[:-1]
  return stack == ''    
 
a = '{}()(){{{{}}[][][]}}'
b = '{}()(){{{{}}[][][]}}())'
 
print('В сроке "{a}" скобки расставлены' + ("" if checksq(a) else "не ") + 'правильно.')
print('В сроке "{b}" скобки расставлены' + ("" if checksq(b) else "не ") + 'правильно.')
Добавлено через 38 секунд
TAVulator, видимо у него в Python пока нет f-строк...
0
7 / 7 / 0
Регистрация: 04.12.2020
Сообщений: 40
03.10.2021, 18:27
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
def is_correct_brackets(expr):
    stack = []
    for char in expr:
        if char in ["(", "{", "["]:
            stack.append(char)
        else:
            if not stack:
                return False
            current_char = stack.pop()
            if current_char == '(':
                if char != ")":
                    return False
            if current_char == '{':
                if char != "}":
                    return False
            if current_char == '[':
                if char != "]":
                    return False
    if stack:
        return False
    return True
 
 
a = input()
if is_correct_brackets(a):
    print("yes")
else:
    print("no")
0
10 / 10 / 0
Регистрация: 05.04.2023
Сообщений: 47
02.08.2024, 16:57
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
s=list(map(str,input()))
a=[]
if len(s)%2!=0:
    print('no')
else:
    for i in range(len(s)):
        if s[i]=='(' or s[i]=='{' or s[i]=='[':
            a.append(s[i])
        elif s[i]==')' and len(a)!=0 and a[-1]=='(':
            a.pop(-1)
        elif s[i]=='}' and len(a)!=0 and a[-1]=='{':
            a.pop(-1)
        elif s[i]==']' and len(a)!=0 and a[-1]=='[':
            a.pop(-1)
        else:
            a.append(s[i])
    if len(a)==0:
        print('yes')
    else:
        print('no')
1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
02.08.2024, 17:45
Цитата Сообщение от yeggygyg Посмотреть сообщение
s=list(map(str,input()))
Мощно!
0
0 / 0 / 0
Регистрация: 17.08.2024
Сообщений: 2
17.08.2024, 14:36
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def is_correct_bracket_sequence(s):
    stack = []
    brackets = {')': '(', ']': '[', '}': '{'}
 
    for char in s:
        if char in brackets.values():
            stack.append(char)
        elif char in brackets.keys():
            if not stack or stack[-1] != brackets[char]:
                return "no"
            stack.pop()
        else:
            return "no"
    return "yes" if not stack else "no"
 
input_sequence = input().strip()
print(is_correct_bracket_sequence(input_sequence))
0
3 / 2 / 1
Регистрация: 23.07.2024
Сообщений: 80
17.08.2024, 15:57
помоему такое решается регулярками. я так думаю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.08.2024, 15:57
Помогаю со студенческими работами здесь

Правильная скобочная последовательность
Правильная скобочная последовательность Рассмотрим последовательность, состоящую из круглых, квадратных и фигурных скобок. Программа...

Правильная скобочная последовательность
Правильная скобочная последовательность Рассмотрим последовательность, состоящую из круглых, квадратных и фигурных скобок. Программа...

Правильная скобочная последовательность
Правильная скобочная последовательность Рассмотрим последовательность, состоящую из круглых, квадратных и фигурных скобок. Программа...

Правильная скобочная последовательность
Наша программа принимает на вход последовательность скобочных символов. Ваша задача определить является ли введенная скобочная...

Правильная скобочная последовательность
Правильная скобочная последовательность Напишите программу, которая определяет, является ли строка, состоящая только из символов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru