J. Огласите список

Иногда при анализе текста важно уметь выделять слова с определёнными характеристиками — например, по количеству гласных.
В этой задаче мы потренируемся именно в такой фильтрации: вы будете искать слова, в которых не менее трёх гласных, независимо от языка или регистра.

Вашему решению предоставлена строка words.
Напишите выражение, которое создаёт список слов, в которых не менее трёх гласных букв (в любом регистре).

Примечание

В решении не должно быть ничего, кроме выражения.

В русском языке гласными являются: аяуюоёэеиы
В английском: aeiouy

Подсказка:
Составьте базовое выражение:

Python
[word for word in words.split() if exp]

В качестве exp рекомендуем написать выражение вида:

Python
sum(... for letter in word if ...) >= 3

Пример

Ввод

words = 'Ехали медведи на велосипеде'

Вывод

['Ехали', 'медведи', 'велосипеде']

Ввод

words = 'My homework is too difficult!'

Вывод

['homework', 'difficult!']

Решение

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

Фактически, нам надо завернуть в списочное выражение следующий код:

Python
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)

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

Посмотреть код

Решение

Python
[word for word in words.split() if sum(1 for letter in word.lower() if letter in 'аяуюоёэеиыaeiouy') >= 3]
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии