Как сделать функцию с оператором «не в» в Python? - PullRequest
0 голосов
/ 27 февраля 2020

Я хотел бы написать функцию, которая проверяет для каждой гласной, присутствует ли она в своем параметре, и возвращает значение False, если текст содержит любую строчную гласную букву, в противном случае - True.

Мой код выглядит следующим образом:

def hasNoVowel(text):
    return ('a' not in text) or ('u' not in text) or ('o' not in text) or ('i' not in text) or ('e' not in text) 
print(hasNoVowel('it is a rainy day'))
print(hasNoVowel('where is the sun?'))
print(hasNoVowel("rhythm"))

Однако вывод, который я получаю:

True
True
True 

Вместо: False, False, True

Может ли кто-нибудь помочь мне и объяснить, что я сделал не так?

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 27 февраля 2020

Вы можете использовать any(...) для оценки состояния и сокращения кода:

def hasNoVowel(text):
    #return ('a' not in text) or ('u' not in text) or ('o' not in text) or ('i' not in text) or ('e' not in text) 
    return not any([v in text for v in 'aeiou'])
print(hasNoVowel('it is a rainy day'))
print(hasNoVowel('where is the sun?'))
print(hasNoVowel("rhythm"))

Вывод:

False
False
True
1 голос
/ 27 февраля 2020

Вы захотите использовать and вместо or в своей функции. В настоящее время ваша функция возвращает False только если все пять гласных присутствуют:

>>> print(hasNoVowel('she found the sun during a rainy day'))
False
...