Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
51 / 35 / 17
Регистрация: 10.01.2022
Сообщений: 110

Избавиться от скобок

28.01.2022, 21:02. Показов 2164. Ответов 6

Студворк — интернет-сервис помощи студентам
Пример
Ввод
My family[Jerald Darrell[1]] and other animals[2]
Вывод
My family and other animals


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

я придумал как избавляться от скобок, но такой вариант не работает при скобках в скобках

Python
1
2
3
4
5
6
7
8
9
a = input()
count = 0
count2 = 0
for i, t in enumerate(a):
    if t == '[':
        count += i
    elif t == ']':
        count2 += i
print(a[0:count]+a[count2 + 1:len(a)-1])
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.01.2022, 21:02
Ответы с готовыми решениями:

Проверить правильность расстановки в строке скобок (баланс открывающих и закрывающих скобок)
помогите с решением задачи. Запросить у пользователя ввод значений согласно варианту. Выполнить задание согласно варианту. После...

Дана цепочка символов состоящая из скобок. Определить правильность расстановки скобок
Дана цепочка символов состоящая из скобок вида (',')','. Определить правильная ли она (правильная:, неправильная: ((])),(())],). Ответ...

Определить максимальную глубину вложения круглых скобок в некоторой формуле с правильной расстановкой скобок
Определить максимальную глубину вложения круглых скобок в некоторой формуле с правильной расстановкой скобок. Исходные данные: ...

6
2431 / 1474 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
28.01.2022, 21:11
Лучший ответ Сообщение было отмечено Ultraevs как решение

Решение

Тут, наверно, регулярками подскажут более эффективно.
Python
1
2
3
4
5
6
7
8
9
10
11
12
s = "My family[Jerald Darrell[1]] and other animals[2]"
 
res = []
tmp = []
for sym in s:
    if sym == '[':
        tmp.append('[')
    elif sym == ']' and tmp:
        tmp.pop()
    elif not tmp:
        res.append(sym)
print(''.join(res))
1
51 / 35 / 17
Регистрация: 10.01.2022
Сообщений: 110
28.01.2022, 22:11  [ТС]
Клевый вариант с списками, но вот только не понятно как надо это делать срезами, так как это задание из блока про срезы
0
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
28.01.2022, 22:20
Цитата Сообщение от Ultraevs
Клевый вариант с списками, но вот только не понятно как надо это делать срезами, так как это задание из блока про срезы
Python
1
2
3
4
from re import sub
 
s = "My family[Jerald Darrell[1]] and other animals[2]"
print(sub(r'\[(?:[^\]\[]|\[[^\]\[]*\])*\]', '', s))
А если по совести, было бы верным сперва проверить насколько корректна вложенность скобок, например, так:
Python
1
2
3
4
5
6
7
8
9
10
def properlynested(s) -> bool:
   counter = 0
   for _, c in enumerate(s):
      if c == '[':
         counter += 1
      elif c == ']':
         counter -= 1
         if counter < 0:
            return False
   return True if counter == 0 else False
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
28.01.2022, 22:41
Лучший ответ Сообщение было отмечено Ultraevs как решение

Решение

Python
1
2
3
4
5
s = input( 's = ' )
for i in range( len(s) ):
    while s[i] in '[]':
        s = s[:i] + s[i+1:] + ' '
print(s)
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38197 / 21130 / 4309
Регистрация: 12.02.2012
Сообщений: 34,737
Записей в блоге: 14
29.01.2022, 11:31
Лучший ответ Сообщение было отмечено Ultraevs как решение

Решение

Ultraevs, idealist, это не решение... Оно не соответствует постановке. Получается My familyJerald Darrell1 and other animals2 (т.е. ты просто удалил скобки). А у TC требуется, чтобы получилось My family and other animals

Правильно - так:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
stri = input('s=')
res=""
c=0
for a in stri:
    if a=='[':
        c+=1
    elif a==']':
        c-=1
    else:
        if c==0:
            res+=a
            
print(res)
1
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
29.01.2022, 12:15
Цитата Сообщение от Catstail Посмотреть сообщение
это не решение... Оно не соответствует постановке.
Пардон, невнимательность!

Добавлено через 41 минуту
Цитата Сообщение от Ultraevs Посмотреть сообщение
вот только не понятно как надо это делать срезами, так как это задание из блока про срезы
Со срезами:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def fun(s):
    st = []
    flag = True
    while flag:
        flag=False
        for i in range( len(s) ):
            match s[i]:
                case '[':
                    flag=True
                    st.append(i)
                case ']':
                    beg = st.pop()
                    if len(st) == 0:
                        s = s[:beg] + s[i + 1:]
                        break
    return s
#==============================================================================
s = 'My family[Jerald Darrell[1]] and other animals[2]'
print( fun(s) )
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.01.2022, 12:15
Помогаю со студенческими работами здесь

Найти комбинацию скобок, при которой функция проверки валидации скобок сработает ошибочно
Всем привет! Написал функцию validBrackets, которая проверяет правильность расположения скобок в строке. Но мне сказали, что есть...

Вывести все корректные комбинации пар круглых скобок, которые можно сформировать из n скобок
Вывести все корректные комбинации пар круглых скобок, которые можно сформировать из n скобок, которые закрываются и открываются. Количество...

Вывести все корректные комбинации пар круглых скобок, которые можно сформировать из n скобок
Вывести все корректные комбинации пар круглых скобок, которые можно сформировать из n скобок, которые закрываются и открываются. Количество...

Внести произвольный текст. Проверить в заданном тексте количество открытых скобок равно числу закрытых скобок
Внести произвольный текст. Проверить в заданном тексте количество открытых скобок равно числу закрытых скобок.

Дана строка символов. Исключить из строки символы, расположенные между ( ). Внутри скобок нет других скобок
Дана строка символов. Исключить из строки символы, расположенные между ( ). Внутри скобок нет других скобок. Тема: строки Добавлено...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru