【问题标题】:Return True if no character in String s is a vowel in Python如果 String s 中没有字符是 Python 中的元音,则返回 True
【发布时间】:2016-01-13 04:56:36
【问题描述】:

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

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。

【问题讨论】:

  • 好吧,我敢打赌,如果您将'a' 作为字符串传入,它将返回False...因为您总是在第一个字符之后返回(并且从不检查任何其他字符)。

标签: python string if-statement for-loop


【解决方案1】:

具有any 和短路特性:

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

【讨论】:

    【解决方案2】:

    您几乎做对了,但问题是,一旦您看到一个非元音字符,您就会立即返回 True。在确定 all 都是非元音之后,您想返回 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,即使我们没有检查整个字符串。

    【讨论】:

    • 我只是在发帖后尝试过,哈哈。非常感谢!
    猜你喜欢
    • 2022-12-04
    • 2021-12-25
    • 2017-04-01
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多