【问题标题】:How do I check if a character in an inputed sentence is a character in a given string? [duplicate]如何检查输入句子中的字符是否是给定字符串中的字符? [复制]
【发布时间】:2018-06-03 00:05:08
【问题描述】:

我是一个全新的程序员,第一次学习 python,如果我的问题不是很清楚并且我没有使用正确的计算机科学术语,很抱歉。我要做的是计算输入句子中元音的数量,而不必写出来:

if i== 'a' or i == 'e' or i == 'i' or i == 'o' or i == 'u' or i == 'A' or i == 'E' or i == 'I' or i == 'O' or i == 'U'`

如何仅使用一行检查字符 char 是否在字符串 'aeiouAEIOU' 内?有人可以告诉我我在这里做错了什么吗?

这是我目前的代码。

def count_vowels (sentence):
    vowels = 0
    for char in sentence:
        if char == 'aeiouAEIOU'.split():
            vowels += 1
    return vowels

【问题讨论】:

    标签: python


    【解决方案1】:

    我们可以将其精简为:

    代码:

    def count_vowels(sentence):
        return sum(char in set('aeiouAEIOU') for char in sentence)
    

    sum() 是一种快速添加序列的方法。这是因为True1False0

    测试代码:

    print(count_vowels('jkdbfjksdbvuihejsdvknweifn'))
    

    结果:

    5
    

    【讨论】:

    • 另一种方法:sum(1 for char in sentence.lower() if char in 'aeiou')
    【解决方案2】:

    尝试将== 替换为in,然后检查该字符是否在元音中:

    def count_vowels (sentence):
        vowels = 0
        for char in sentence:
            if char in 'aeiouAEIOU':
                vowels += 1
        return vowels
    print(count_vowels('Hello World!!!'))
    

    输出:

    3
    

    短途

    尝试创建一个列表理解:

    def count_vowels (sentence):
        return len([i for i in sentence if i in 'aeiouAEIOU'])
    print(count_vowels('Hello World!!!'))
    

    输出:

    3
    

    【讨论】:

    • 有没有一种更简单的方法可以做到这一点,而无需在“aeiouAEIOU”字符串上使用 split() 并且仍然只为 if 语句保留 1 行?
    • @RoryDaulton 感谢您让我知道我编辑了我的答案,我认为现在更好
    猜你喜欢
    • 2011-07-05
    • 1970-01-01
    • 2011-03-29
    • 2019-06-07
    • 2013-12-13
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多