我想写一个函数,测试每个元音是否出现在其参数中,如果文本包含任何小写元音,则返回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
代替:假,假,真
有人能帮我解释一下我做错了什么吗?
提前谢谢!
您可以使用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
您希望在函数中使用and
而不是or
。目前,只有当所有五个元音都存在时,函数才会返回False
:
>>> print(hasNoVowel('she found the sun during a rainy day'))
False