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

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

30.03.2019, 20:23. Показов 13515. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru