Иногда при анализе текста важно уметь выделять слова с определёнными характеристиками — например, по количеству гласных.
В этой задаче мы потренируемся именно в такой фильтрации: вы будете искать слова, в которых не менее трёх гласных, независимо от языка или регистра.
Вашему решению предоставлена строка words
.
Напишите выражение, которое создаёт список слов, в которых не менее трёх гласных букв (в любом регистре).
Примечание
В решении не должно быть ничего, кроме выражения.
В русском языке гласными являются: аяуюоёэеиы
В английском: aeiouy
Подсказка:
Составьте базовое выражение:
[word for word in words.split() if exp]
В качестве exp
рекомендуем написать выражение вида:
sum(... for letter in word if ...) >= 3
Пример
Ввод
words = 'Ехали медведи на велосипеде'
Вывод
['Ехали', 'медведи', 'велосипеде']
Ввод
words = 'My homework is too difficult!'
Вывод
['homework', 'difficult!']
Решение
Задачка на первый взгляд может показаться сложной. Но на самом деле, если попробовать решить ее обычным способом становится понятно, что ничего особо сложного в ней нет.
Фактически, нам надо завернуть в списочное выражение следующий код:
result = []
for word in words.split():
count = 0
for letter in word.lower():
if letter in 'аяуюоёэеиыaeiouy':
count += 1
if count >= 3:
result.append(word)
С точки зрения читабельности кода, я бы в таких случаях предпочел классическое решение – оно понятно и доступно любому кто знает любой из большинства распространенных языков программирования, в то время, как решение по условию задачи требует тренировки, для легкого чтения.
Посмотреть код
Решение
[word for word in words.split() if sum(1 for letter in word.lower() if letter in 'аяуюоёэеиыaeiouy') >= 3]