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

Удалить из строки первое и последнее вхождение буквы

30.03.2019, 20:23. Показов 13258. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно чтобы пользователь вводил текст, в котором буква H встречается минимум два раза. Нужно удалить первое и последнее вхождение буквы H и всё, что между ними
Пример:
In the hole in the ground there lived a hobbit
Результат:
In tobbit.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.03.2019, 20:23
Ответы с готовыми решениями:

Удалить из строки первое вхождение буквы H и последнее вхождение буквы H
Составьте программу и блок-схему алгоритма обработки строки, находящейся в файле. Необходимо удалить из строки первое вхождение буквы H и...

Создайте приложение, которое удалит из этой строки первое и последнее вхождение буквы t
Дана строка, в которой буква t встречается минимум два раза. Создайте приложение, которое удалит из этой строки первое и последнее...

Удалить из строки первое и последнее вхождение буквы h, а также все символы между ними
Дана строка, в которой буква h встречается минимум два раза. Удалите из этой строки первое и последнее вхождение буквы h, а также все...

21
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
30.03.2019, 23:58
Лучший ответ Сообщение было отмечено Valman229 как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
s = 'In the hole in the ground there lived a hobbit'
indexFirst = None
indexLast = None
#indexes = []
n = len(s)
for i in range(n):
    if s[i] == 'h' or s[i] == 'H':
        indexFirst = i
        break
for j in range(n-1, 0, -1):
    if s[j] == 'h' or s[j] == 'H':
        indexLast = j
        break
if indexFirst:
    s1 = s[:indexFirst] + s[indexLast+1:]
    print(s1)
else:
    print('Букв h или H нет')
Вывод:
Python
1
In tobbit
1
 Аватар для leery_user
178 / 147 / 21
Регистрация: 07.11.2009
Сообщений: 591
31.03.2019, 00:01
Python
1
2
str = "In the Hole in the ground tHere lived a hobbit"
print(str.replace(str[str.find("h"):str.rfind("h") + 1], ""))
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
31.03.2019, 00:29
leery_user, Ваш код для H не работает.
Для строки "In tHe Hole in the ground tHere lived a hobbit" выводит
In tHe Hole in tobbit
0
 Аватар для leery_user
178 / 147 / 21
Регистрация: 07.11.2009
Сообщений: 591
31.03.2019, 00:32
Viktorrus,
Миниатюры
Удалить из строки первое и последнее вхождение буквы  
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
31.03.2019, 00:41
leery_user, Что Вы картинку показываете, в картинке код только для строчных h. А в условии задачи написано
Цитата Сообщение от Valman229 Посмотреть сообщение
Нужно удалить первое и последнее вхождение буквы H и всё, что между ними
При этом пример со строчной буквой h.
Что бы удовлетворить и условию и примеру, нужно рассматривать как строчные так и прописные.
0
 Аватар для leery_user
178 / 147 / 21
Регистрация: 07.11.2009
Сообщений: 591
31.03.2019, 00:42
Viktorrus, я вам предоставил скрин, все работает для всех случаев. Проверьте у себя или тут pythontutor.com
Строчку в своем примере я специально с заглавными буквами H привел, чтобы избежать подобных вопросов. Вы пробовали код запускать или только на "h" смотрите?
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
31.03.2019, 00:46
leery_user, Я проверил и написал, как Ваш код работает для строки "In tHe Hole in the ground tHere lived a hobbit"
Не мешало бы и Вам проверить Ваш код на строке "In tHe Hole in the ground tHere lived a hobbit"
0
 Аватар для leery_user
178 / 147 / 21
Регистрация: 07.11.2009
Сообщений: 591
31.03.2019, 00:49
Viktorrus, а на скрине что?) Проверьте в онлайне код, он работает, если у вас выводит без учета "H", я хз. Даже если у вас косяк, можете передать 3-ей строчкой такой же код, но для "H, даже так мой код будет более оптимален, но он и так учитывает и "h" и "H".
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
31.03.2019, 00:58
leery_user, На скрине другой пример, работающий только для строчных h. Если бы в условии задания которое дано здесь не говорилось про прописные H, то код со скрина подошел бы, а так нет, и строка "In tHe Hole in the ground tHere lived a hobbit" это доказывает.

Добавлено через 3 минуты
leery_user, Запустите код в питоне со строкой "In tHe Hole in the ground tHere lived a hobbit" и тогда убедитесь.
1
 Аватар для leery_user
178 / 147 / 21
Регистрация: 07.11.2009
Сообщений: 591
31.03.2019, 00:59
Viktorrus, прошу прощения, вы правы, скопировал вашу строчку. Действительно косяк.
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
31.03.2019, 01:12
leery_user, Однако Ваш вариант оказался для меня полезен. Я не знал, что существует метод str.rfind() , который находит наибольший индекс. Нашел этот метод в стандартной библиотеке и добавил в свою базу данных.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
31.03.2019, 01:15
Python
1
2
3
4
5
6
>>> s="In tHe Hole in the ground tHere lived a hobbit"
>>> s[:s.lower().find('h')] + s[s.lower().rfind('h')+1:]
'In tobbit'
>>> s.replace(s[s.find("h"):s.rfind("h") + 1], "")
'In tHe Hole in tobbit'
>>>
0
 Аватар для leery_user
178 / 147 / 21
Регистрация: 07.11.2009
Сообщений: 591
31.03.2019, 01:18
Viktorrus,
Вот так должно быть ок
Python
1
print(str.replace(str[str.lower().find("h"):str.lower().rfind("h") + 1], ""))
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
31.03.2019, 01:24
leery_user,
у
Garry Galler,
компактнее
0
 Аватар для leery_user
178 / 147 / 21
Регистрация: 07.11.2009
Сообщений: 591
31.03.2019, 01:28
Viktorrus, пожалуй да) Пойду спать, а то уже невнимательность большая.
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
31.03.2019, 01:32
leery_user, у Вас теперь тоже правильно работает. Только одно замечание.
Не рекомендуется переменным давать имена такие же как у ключевых слов. str() является встроенной функцией. Этот же недочет и в скрине, что говорит не в его пользу.
0
11 / 2 / 1
Регистрация: 01.11.2018
Сообщений: 42
31.03.2019, 01:49
зачем в питоне изобретать велосипед если есть поставленная цель?
Python
1
2
3
4
5
6
s = 'In the hole in the ground there lived a hobbit'
b = list(s)[:2]
c = list(s)[-6:]
x = ''.join(b)
z = ''.join(c)
print(x,z)
Добавлено через 8 минут
простите сразу не увидел, каков ответ надо, а правка на форуме чет не работает =\
Python
1
2
3
4
5
6
7
s = 'In the hole in the ground there lived a hobbit'
b = list(s)[:2]
c = list(s)[-6:]
x = ''.join(b)
z = ''.join(c)
z = z[-1:]+z[1:]
print(x,z)
0
 Аватар для leery_user
178 / 147 / 21
Регистрация: 07.11.2009
Сообщений: 591
31.03.2019, 10:35
Цитата Сообщение от Viktorrus Посмотреть сообщение
Не рекомендуется переменным давать имена такие же как у ключевых слов
Это так, но так как в данном коде не используется приведение к строке, то роли не играет.

Это все же не законченное решение, а пример как стоит решать задачку. По хорошему и мой код и код Garry Galler не решают задачу, так как нет input() и проверки на количество букв h, хотя в задании указано - минимум 2. Однако это уже дело автора вопроса допилить все эти мелочи, просто увидев ваше решение, мне оно показалось слишком запутанным.

poppy1, ваш вариант и есть велосипед, причем нерабочий. Вбейте такую строку - "1h In the hole in the ground there lived a hobbit H".
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
31.03.2019, 12:49

Не по теме:

Цитата Сообщение от leery_user Посмотреть сообщение
Это все же не законченное решение, а пример как стоит решать задачку
Именно так и нужно поступать.
Давать готовое решение "под ключ" можно только за оплату. Иначе топикстартеры начинают думать будто форум это такой живой "решебник", генератор ГДЗ и начинают клянчить сделать за них все в темах типа "ПАМАГИТЕ СРОЧНА А-А-А".




Цитата Сообщение от poppy1 Посмотреть сообщение
зачем в питоне изобретать велосипед е
А зачем вы сами его только что изобрели? В вашем решение куча ненужных действий, помимо того, что как указали выше, еще и работает не так как нужно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.03.2019, 12:49
Помогаю со студенческими работами здесь

Удалить из строки первое и последнее вхождение заданной подстроки
Написать программу, удаляющую из строки первое и последнее вхождение заданной подстроки. Все данные вводятся с клавиатуры. При выполнении...

Удалить из строки первое и последнее вхождение заданной подстроки.
1.Написать программу, удаляющую из строки первое и последнее вхождение заданной подстроки. 2.Считывание строк должно осуществляться с...

Удалить из строки первое и последнее вхождение заданной подстроки
Написать программу, удаляющую из строки первое и последнее вхождение заданной подстроки. Все данные вводятся с клавиатуры. При выполнении...

Найти первое и последнее вхождение заданной буквы в слове
Дана строка. Если в этой строке буква f встречается только один раз, выведите её индекс. Индексы начинаются с 0. Если она встречается два и...

Оставить в слове только первое и последнее вхождение каждой буквы
Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами -...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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