1 / 1 / 0
Регистрация: 07.03.2019
Сообщений: 33
1

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

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

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

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

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

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

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

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

21
1728 / 967 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6
30.03.2019, 23:58 2
Лучший ответ Сообщение было отмечено 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
178 / 147 / 21
Регистрация: 07.11.2009
Сообщений: 591
31.03.2019, 00:01 3
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
1728 / 967 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6
31.03.2019, 00:29 4
leery_user, Ваш код для H не работает.
Для строки "In tHe Hole in the ground tHere lived a hobbit" выводит
In tHe Hole in tobbit
0
178 / 147 / 21
Регистрация: 07.11.2009
Сообщений: 591
31.03.2019, 00:32 5
Viktorrus,
Миниатюры
Удалить из строки первое и последнее вхождение буквы  
0
1728 / 967 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6
31.03.2019, 00:41 6
leery_user, Что Вы картинку показываете, в картинке код только для строчных h. А в условии задачи написано
Цитата Сообщение от Valman229 Посмотреть сообщение
Нужно удалить первое и последнее вхождение буквы H и всё, что между ними
При этом пример со строчной буквой h.
Что бы удовлетворить и условию и примеру, нужно рассматривать как строчные так и прописные.
0
178 / 147 / 21
Регистрация: 07.11.2009
Сообщений: 591
31.03.2019, 00:42 7
Viktorrus, я вам предоставил скрин, все работает для всех случаев. Проверьте у себя или тут pythontutor.com
Строчку в своем примере я специально с заглавными буквами H привел, чтобы избежать подобных вопросов. Вы пробовали код запускать или только на "h" смотрите?
0
1728 / 967 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6
31.03.2019, 00:46 8
leery_user, Я проверил и написал, как Ваш код работает для строки "In tHe Hole in the ground tHere lived a hobbit"
Не мешало бы и Вам проверить Ваш код на строке "In tHe Hole in the ground tHere lived a hobbit"
0
178 / 147 / 21
Регистрация: 07.11.2009
Сообщений: 591
31.03.2019, 00:49 9
Viktorrus, а на скрине что?) Проверьте в онлайне код, он работает, если у вас выводит без учета "H", я хз. Даже если у вас косяк, можете передать 3-ей строчкой такой же код, но для "H, даже так мой код будет более оптимален, но он и так учитывает и "h" и "H".
0
1728 / 967 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6
31.03.2019, 00:58 10
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
178 / 147 / 21
Регистрация: 07.11.2009
Сообщений: 591
31.03.2019, 00:59 11
Viktorrus, прошу прощения, вы правы, скопировал вашу строчку. Действительно косяк.
0
1728 / 967 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6
31.03.2019, 01:12 12
leery_user, Однако Ваш вариант оказался для меня полезен. Я не знал, что существует метод str.rfind() , который находит наибольший индекс. Нашел этот метод в стандартной библиотеке и добавил в свою базу данных.
0
Эксперт Python
5412 / 3836 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1
31.03.2019, 01:15 13
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
178 / 147 / 21
Регистрация: 07.11.2009
Сообщений: 591
31.03.2019, 01:18 14
Viktorrus,
Вот так должно быть ок
Python
1
print(str.replace(str[str.lower().find("h"):str.lower().rfind("h") + 1], ""))
0
1728 / 967 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6
31.03.2019, 01:24 15
leery_user,
у
Garry Galler,
компактнее
0
178 / 147 / 21
Регистрация: 07.11.2009
Сообщений: 591
31.03.2019, 01:28 16
Viktorrus, пожалуй да) Пойду спать, а то уже невнимательность большая.
0
1728 / 967 / 199
Регистрация: 22.02.2018
Сообщений: 2,694
Записей в блоге: 6
31.03.2019, 01:32 17
leery_user, у Вас теперь тоже правильно работает. Только одно замечание.
Не рекомендуется переменным давать имена такие же как у ключевых слов. str() является встроенной функцией. Этот же недочет и в скрине, что говорит не в его пользу.
0
11 / 2 / 1
Регистрация: 01.11.2018
Сообщений: 42
31.03.2019, 01:49 18
зачем в питоне изобретать велосипед если есть поставленная цель?
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
178 / 147 / 21
Регистрация: 07.11.2009
Сообщений: 591
31.03.2019, 10:35 19
Цитата Сообщение от Viktorrus Посмотреть сообщение
Не рекомендуется переменным давать имена такие же как у ключевых слов
Это так, но так как в данном коде не используется приведение к строке, то роли не играет.

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

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

Не по теме:

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




Цитата Сообщение от poppy1 Посмотреть сообщение
зачем в питоне изобретать велосипед е
А зачем вы сами его только что изобрели? В вашем решение куча ненужных действий, помимо того, что как указали выше, еще и работает не так как нужно.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.03.2019, 12:49
Помогаю со студенческими работами здесь

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

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

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

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

Удалить в словах первое вхождение буквы ‘е’
1.Удалить в словах первое вхождение буквы ‘е’, если такое имеется.

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru