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

Поменять символ в строке на '(', если он встречается 1 раз и на ')', если встречается более 1 раза

14.09.2023, 18:53. Показов 1062. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача. Нужно поменять символ в строке на '(', если он встречается 1 раз и на ')', если встречается более 1 раза. Подскажите ошибку.
Python
1
2
3
4
5
6
7
def replace(word):
    for i in word:
        if word.count(i, 0, len(word)) > 1:
            word.replace(i, ')')
        else: 
            word.replace(i, '(')
    return word
Добавлено через 52 минуты
Добавлю еще, что регистр не важен. Получилось пока так, но для строки 'a()' должен быть результат '(((', а выдает ')))'.
Python
1
2
3
4
5
6
7
8
def replace(word):
    word = word.lower()
    for i in word:
        if word.count(i, 0, len(word)) > 1:
            word = word.replace(i, ')')
        else: 
            word = word.replace(i, '(')
    return word
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.09.2023, 18:53
Ответы с готовыми решениями:

Если символ в данной строке встречается один раз, в конце строки добавлять ещё раз этот символ
Помогите с задачей на C# Ввести строку символов. Если символ в данной строке встречается один раз, в конце строки добавлять ещё раз этот...

Дана строка. Если какой-то символ встречается в ней более одного раза, первое вхождение этого символа оставить
Дана символьная строка. Если какой-то символ встречается в ней более одного раза, первое вхождение этого символа оставить без измениния,...

Дана символьная строка. Если какой-то символ в ней встречается более одного раза, оставить только первое вхождение
Народ.помогите решить задачку Дана символьная строка. Если какой-то символ в ней встречается более одного раза, оставить только первое...

8
 Аватар для TimutGin
515 / 339 / 146
Регистрация: 16.02.2021
Сообщений: 626
14.09.2023, 19:32
Python
1
2
3
4
5
6
def replace(word):
    result = ''
    for i in word.lower():
        if word.count(i) > 1: result += ')'
        else: result += '('     
    return result
1
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
14.09.2023, 20:03
Daos711, Тоже самое что и у уважаемого TimutGin, только в одну строку.
Python
1
2
def replace(word):
    return "".join(')' if word.count(i) > 1 else '(' for i in word)
0
0 / 0 / 0
Регистрация: 25.04.2020
Сообщений: 39
14.09.2023, 20:06  [ТС]
Для строки 'Aa' по вашей программе получится '((' вместо '))'
Решение в одну строку мне, как новичку, воспринимать непросто. Вот решение у TimutGin более понятное, но дает неверный ответ на некоторые строки
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
14.09.2023, 20:36
Лучший ответ Сообщение было отмечено Daos711 как решение

Решение

Цитата Сообщение от Daos711 Посмотреть сообщение
получится '((' вместо '))'
Python
1
2
3
4
5
6
7
def replace(word):
    word = word.lower()
    result = ''
    for i in word:
        if word.count(i) > 1: result += ')'
        else: result += '('     
    return result
2
0 / 0 / 0
Регистрация: 25.04.2020
Сообщений: 39
14.09.2023, 20:49  [ТС]
Теперь работает, спасибо. Получается, понижение регистра нужно было сделать заранее, а не в строке вызова цикла for? Ну и вопрос по моему первоначальному решению. Почему там было некорректно?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
14.09.2023, 21:01
Потому что перебирались символы строки, приведенной к нижнему регистру, а подсчет количества шел по строке НЕ приведенной к нижнему регистру.
Можно и вот так было бы допилить -
Python
1
2
3
4
5
6
def replace(word):
    result = ''
    for i in word.lower():
        if word.lower().count(i) > 1: result += ')'   # <-------
        else: result += '('     
    return result
0
0 / 0 / 0
Регистрация: 25.04.2020
Сообщений: 39
14.09.2023, 21:26  [ТС]
Понял, спасибо.
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
14.09.2023, 23:13
Ну или так:
Python
1
2
3
4
5
def replace(word):
    return ''.join(map(lambda x: '(' if word.lower().count(x.lower()) == 1 else ')', word))
 
word = input('->')
print(replace(word))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.09.2023, 23:13
Помогаю со студенческими работами здесь

Ввести строку символов. Если символ в данной строке встречается один раз, в конце строки добавлять ещё раз его
Ввести строку символов. Если символ в данной строке встречается один раз, в конце строки добавлять ещё раз этот символ. Pезультат вывести...

Если какой-то символ встречается в ней более одного раза, первое вхождение этого символа оставить без изменений, второе и последующее удалить
Вот что из себя представляет задание: Дана символьная строка.Если какой-то символ встречается в ней более одного раза, первое вхождение...

Если и в той и в другой строке символов более 1 раза встречается одна и та же буква, то вывести на экран "ДА"
я новичёк в Delphi, помогите кто чем сможет, хотя бы мыслёй ПЛИС!!! сегодня попалась такая задачка которую нужно осуществить в делфи: ...

Вывести записи если 1 поле встречается более 1 раза
Доброго времени суток! Подскажите как можно решить следующую задачу. Есть 3 таблицы, policy (id, name, active), user (id, name,...

Операции со строками. Если символ встречается более одного раза, второе вхождение– заменить на "2", третье - на "3"
Дана символьная строка. Если какой-то символ встречается в ней более одного раза, первое вхождение этого символа оставить без изменения,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru