如果String中没有字符是Python中的元音

时间:2015-10-14 22:19:26

标签: python string if-statement for-loop

我已经尝试过寻找答案但似乎没有任何帮助。我已经完成了:

def noVowel(s):
    'return True if string s contains no vowel, False otherwise'
    for char in s:
        if char.lower() not in 'aeiou':
            return True
        else:
            return False

无论字符串如何,它总是返回True。

2 个答案:

答案 0 :(得分:5)

你几乎把它弄好了,但问题是,只要你看到一个非元音的角色,你就会在那里返回True。在您确定所有是非元音之后,您希望返回True:

def noVowel(s):
    'return True if string s contains no vowel, False otherwise'
    for char in s:
        if char.lower() in 'aeiou':
            return False
    return True  # We didn't return False yet, so it must be all non-vowel.

重要的是要记住,return会阻止其余的功能运行,所以只有在您确定功能完成计算时才会返回。在您的情况下,即使我们没有检查整个字符串,我们也可以安全地return False看到元音。

答案 1 :(得分:2)

any和短路属性:

def noVowel(s):
    return not any(vowel in s.lower() for vowel in "aeiou")