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

Найти в строке слова, которые начинаются и оканчиваются на одну и ту же букву

24.11.2021, 00:39. Показов 5114. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана строка.Найти в этой строке слова, которые начинаються и оканчиваються на одну и ту же букву. (Python)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.11.2021, 00:39
Ответы с готовыми решениями:

Найти в строке слова, которые начинаются и оканчиваются на одну и ту же букву
Дана строка.Найти в этой строке слова, которые начинаються и оканчиваються на одну и ту же букву. (На Python плиз)

Дана строка. Найти в этой строке слова, которые начинаются и оканчиваются на одну и ту же букву
Дана строка. Найти в этой строке слова, которые начинают¬ся и оканчиваются на одну и ту же букву.

Найти слова, которые начинаются и оканчиваются на одну и ту же букву
В предложении найти слова, которые начинаются и оканчиваются одной и той же буквой. Пример: Клюет, и бросает, и смотрит в окно, как будто...

11
enx
 Аватар для enx
1190 / 766 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
24.11.2021, 06:06
Python
1
2
txt = 'Дана строка. Найти в этой строке слова, которые начинаються и оканчиваються на одну и ту же букву. (Python)'
print(*filter(lambda x: x[0].lower() == x[-1].lower(), txt.split()))
1
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
24.11.2021, 12:11
Лучший ответ Сообщение было отмечено Vlad_Play как решение

Решение

Vlad_Play, устроит ?
программа
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import re
 
 
def word_finder(text_str: str) -> list:
    """
    Поиск слов, начинающихся и заканчивающихся одной и той же буквой.
    :param text_str: строка, для поиска.
    :return: результирующий список.
    >>> word_finder(text_str='оно ото, которое (задание), само себя не сделает')
    [('оно', 'о'), ('ото', 'о')]
    """
    if isinstance(text_str, str) and text_str != '' and not any(i.isdigit() for i in text_str):
        return re.findall(r'\b((\w)\w*\2)\b', text_str)
    else:
        raise TypeError('Передан неверный тип данных')
Тест:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from unittest import TestCase, main
from tested.first_and_last_package import first_and_last
from tested.first_and_last_package.first_and_last import word_finder
import doctest
 
 
def load_tests(loader, tests, ignore):
    tests.addTests(doctest.DocTestSuite(first_and_last))
    return tests
 
 
class RegTest(TestCase):
    def test_works(self):
        self.assertEqual(
            word_finder(text_str='То,оно,  которое (задание), само себя не сделает'), [('оно', 'о')])
 
    def test_empty_string(self):
        with self.assertRaises(TypeError) as e:
            word_finder(text_str='')
        self.assertEqual('Передан неверный тип данных', e.exception.args[0])
 
    def test_string_of_digs(self):
        with self.assertRaises(TypeError) as e:
            word_finder(text_str=1234)
        self.assertEqual('Передан неверный тип данных', e.exception.args[0])
 
    def test_no_such_word(self):
        self.assertEqual(word_finder(
            text_str=' Дана строка. Найти в этой строке слова, которые начинаються и оканчиваються на одну и ту '), [])
 
 
if __name__ == '__main__':
    main()
enx, а Ваша программа на каких данных работает правильно, то есть - находит слова, начинающиеся и заканчивающиеся на одну и ту же букву?
1
enx
 Аватар для enx
1190 / 766 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
24.11.2021, 12:47
Dax да не говорите.

Python
1
print(word_finder('Где-то у вас   фыф.___.явная\\t ошибка в логике.'))
Bash
1
[('фыф', 'ф'), ('___', '_'), ('явная', 'я')]
Добавлено через 10 минут
Если по делу, не очень понятно по условию, что считать словом:

1. Последовательность символов разделенных пробелом.
2. Последовательность символов разделенных пробелом или любыми знаками пунктуации.
...
N. Последовательность символов, состоящих только из алфавита определенного языка, разделенных пробелом или любыми знаками пунктуации.

Опять же, почему буква Я и я не равны, буквы то одни и те же, регистр разный, учитываем его или нет. И почему предлоги не считаем словами? А как понимать слова, написанные через дефис, например: 'кто-либо', 'что-нибудь' и т.д., это одно слово или два.

В ТЗ не сказано, но пусть будет так.

Python
1
2
txt = 'Где-то у вас   фыФ.___.Явная\\t\\ ошибка в логике.'
print(*filter(lambda x: x[0].lower() == x[-1].lower(), ''.join(map(lambda x: x if x.isalpha() else ' ', txt)).split()))
0
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
24.11.2021, 13:53
enx, соглашусь с тем, что не ясно, что считать словом, поэтому, программы могут не очень корректно работать,но, это уже вопрос к ТЗ, равно как и о том, чем считать предлоги.
Я запустил начальную версию Вашей программы и увидев не совсем понятный мне вывод. спросил на каких данных она работает так, как просил ТС.
Да мой код выводит букву дополнительно, но, начнем с того, что программа протестирована и тест приведен, то есть, понятно, как и при каких условиях она работает.
Во-вторых , на тех данных, на которых я проверял, работает так, как просил ТС.
В-третьих, я не критикую, а спрашиваю, какую строку\ строки, нужно было передать первой версии Вашей программы, чтоб получить слова, начинающиеся и заканчивающиеся одной буквой(ко второй версии данные прилагаются) , это хорошо.
Миниатюры
Найти в строке слова, которые начинаются и оканчиваются на одну и ту же букву  
0
enx
 Аватар для enx
1190 / 766 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
24.11.2021, 14:27
Dax, так я тоже без излишеств и критики, понятно, что там выходит слово и буква начала \ окончания, я привел пример, что любая последовательность из '_' длиной 2 и более - воспринимается словом, при этом регулярное воспринимает всю (ну или почти, не проверял на всем) пунктуацию в качестве разделителя.

В коде выводит только те слова, что соответствуют условию, ['в', 'и', 'и'] - они начинаются и заканчиваются сами на себя, что по моей логике соответствует условию. Других таких слов в примере не было.

Почему слова \ предлоги и так далее считаю словами, тут отлично подойдет следующий пример:

'Я рассказал о себе и обо всем, что как-то происходило с моим другом по имени Максим Волков'

Мы не можем не посчитать 'я', если не считаем 'о' то должны игнорировать 'обо', Максим - очевидно начинается и заканчивается на одну букву. Смотрите, какие начинаются чудеса, в зависимости от подхода к терминологии.

Python
1
2
3
4
txt = 'Я рассказал о себе и обо всем, что как-то происходило с моим другом по имени Максим Волков'
print(list(filter(lambda x: x[0].lower() == x[-1].lower(), txt.split())))
print(list(filter(lambda x: x[0].lower() == x[-1].lower(), ''.join(map(lambda x: x if x.isalpha() else ' ', txt)).split())))
print(word_finder(txt))
Bash
1
2
3
['Я', 'о', 'и', 'обо', 'с', 'моим', 'имени', 'Максим', 'Волков']
['Я', 'о', 'и', 'обо', 'как', 'с', 'моим', 'имени', 'Максим', 'Волков']
[('обо', 'о'), ('как', 'к'), ('моим', 'м'), ('имени', 'и')]
Ну и в целом спасибо за пример реализации на ООП, он отличный
1
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
24.11.2021, 14:47
enx, вот теперь вижу, код работает, все замечательно).
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
24.11.2021, 18:17
Dax, убедились, что переменная - строка
Цитата Сообщение от Dax Посмотреть сообщение
if isinstance(text_str, str)
.. и на всякий случай убедились, что каждый символ строки - тоже строка
Цитата Сообщение от Dax Посмотреть сообщение
and all(isinstance(i, str) for i in text_str)
Сильно
0
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
24.11.2021, 19:08
iSmokeJC, да, правда перебор, но, в случае посимвольной проверки, надо было isalpha() взять, чтоб не проходили моменты типа "texr_str=12"(так то строка, да не буквенная).)
Чегой-то я просмотрел, учту, спасибо).

Добавлено через 16 минут
Задумывалось в таком виде(метод masked_digs), тогда проверка оправдана, но, что-й то я дал сбой
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from unittest import TestCase, main
from tested.first_and_last_package import first_and_last
from tested.first_and_last_package.first_and_last import word_finder
import doctest
 
 
def load_tests(loader, tests, ignore):
    tests.addTests(doctest.DocTestSuite(first_and_last))
    return tests
 
 
class RegTest(TestCase):
    def test_works(self):
        self.assertEqual(
            word_finder(text_str='То,оно,  которое (задание), само себя не сделает'), [('оно', 'о')])
 
    def test_empty_string(self):
        with self.assertRaises(TypeError) as e:
            word_finder(text_str='')
        self.assertEqual('Передан неверный тип данных', e.exception.args[0])
 
    def test_string_of_digs(self):
        with self.assertRaises(TypeError) as e:
            word_finder(text_str=1234)
        self.assertEqual('Передан неверный тип данных', e.exception.args[0])
 
    def test_no_such_word(self):
        self.assertEqual(word_finder(
            text_str=' Дана строка. Найти в этой строке слова, которые начинаються и оканчиваються на одну и ту '), [])
 
    def test_masked_digs(self):
        with self.assertRaises(TypeError) as e:
            word_finder(text_str='То,оно,  которое (задание), само себя не сделает123')
        self.assertEqual('Передан неверный тип данных', e.exception.args[0])
 
 
if __name__ == '__main__':
    main()
Добавлено через 21 минуту
и правда, перебор, regex же возьмет только буквы..
Все, доплыл.
0
0 / 0 / 0
Регистрация: 31.10.2021
Сообщений: 22
24.11.2021, 22:32  [ТС]
enx, уменя неработает почемуто??
Миниатюры
Найти в строке слова, которые начинаются и оканчиваются на одну и ту же букву  
0
enx
 Аватар для enx
1190 / 766 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
25.11.2021, 05:32
Vlad_Play, ты пытаешься вызвать функцию, написанную Dax, не имея этой функции в коде.
0
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
25.11.2021, 17:42
Vlad_Play, Вы б сначал функцию написали.скопировали, а уж, потом -вызывали, тогда работать будет, enx Вам дело говорит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.11.2021, 17:42
Помогаю со студенческими работами здесь

Вывести только те слова сообщения, которые начинаются и оканчиваются на одну и ту же букву
Дано осмысленное текстовое сообщение (т.е. алфавитно-цифровая информация, разделенная пробелами и знаками препинания, в конце которого...

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

Найти в строке все слова которые начинаются на одну и ту же букву.
С клавиатуры вводится предложение, найти все слова которые начинаются на одну и ту же букву, заменить все такие слова на слово Hеllo,...

В строке распечатать слова, которые начинаются и заканчиваются на одну букву
В строке распечатать слова, которые начинаются и заканчиваются на одну букву

Найти в строке те слова, которые начинаются и оканчиваются одной и той же буквой.
Есть на паскале код uses crt; var s,s1:string; n,i,k,f:byte; begin clrscr; writeln('Введите последовательность слов,...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru