Вывести только слова, у которых первая буква равна последней букве, без учета регистра
Код работает, но мне сказали, что есть и другие решения этой задачи.
s = input("Введите строку: ").split()
n = len(s)
print(n)
words = []
for word in s:
if len(word) > 1:
start = word[0].lower()
finish = word[-1].lower()
if start == finish:
words.append(word)
if words:
print(words)
else:
print("В этом приложений", s, "нет слов, которые начинаются и заканчиваются одной и той же буквой")
Ответы (2 шт):
Автор решения: u111
→ Ссылка
- Решение через списковое включение
inp = input('Введите строку!')
list_words = [
x for x in inp.split()
if len(x) > 1 and x[0].lower() == x[-1].lower()
]
if list_words:
print(*list_words)
else:
print(
'В предложении', inp, 'нет слов, которые начинаются и заканчиваются с одной и той же буквой'
)
- Посимвольное решение
inp = input('Введите строку!')
words = []
word = ''
for i in inp: # Проходимся по всем символам
if i == ' ' and len(word) > 1:
# Если символ - пробел, добавляем слово в список
words.append(word)
word = ''
else:
# Иначе добавляем символ к слову
word += i
# Обработка слова в конце предложения
if word:
words.append(word)
filtered_words = []
for word in words:
start = word[0].lower()
finish = word[-1].lower()
if start == finish:
filtered_words.append(word)
if filtered_words:
print(*filtered_words)
else:
print('В предложении', inp, 'нет слов, которые начинаются и заканчиваются с одной и той же буквой')
Автор решения: Oopss
→ Ссылка
import re
s = input("Введите строку: ").lower()
matches = re.finditer(r'\b(\w)\w*\1\b', s)
words = [match.group() for match in matches]
if words:
print(words)
else:
print("В этом предложении", s, 'нет слов которые начинаются и заканчиваются с одной и той же буквой')