如何使元音计数器和总和更简洁有效?蟒蛇

时间:2018-12-27 04:35:49

标签: python optimization

我是Stack Overflow的新手,但注意到它很有帮助,因此打开了这个社区。只是好奇是否有任何方法可以使此元音计数器更简洁/更有条理。任何帮助将不胜感激,并且深入的回答也将是很棒的。谢谢!

def vowel_count(str):

    str = input("Please enter a sentence: ")
    str1 = (str.lower())
    #intialize count variable to zero
    count = 0

    #create a set of vowels
    vowel = set("aeiou")

    for alphabet in str1:
        if alphabet in vowel:
            count = count+1

    print("Number of vowels in this sentence is: " , count)
    print()
    print("A,E,I,O,U")
    print(*map(str.lower().count, "aeiou"))

vowel_count(str)    

2 个答案:

答案 0 :(得分:1)

我看到在您的代码示例中,您使用了一个名为str的变量。不要这样做,因为str是内置函数,这可能会导致问题。

该解决方案如何?

string = input().lower()

print(sum([string.count(i) for i in "aeiou"]))

首先,我得到输入,我立即降低了输入。 然后,我为每个元音使用string.count(i),在这种情况下,它返回i(元音之一)出现在字符串(输入)中的次数。 然后,我在创建的数组上调用sum函数,该函数返回数组中所有元素的总和。最后但并非最不重要的一点是,我只打印了此求和函数返回的值。

如果您不了解传递给sum函数的参数是一个数组,请查看List Comprehension的主题。

答案 1 :(得分:0)

我认为您应该使用Counter

from collections import Counter
In [1]: a = 'I am mayank'
In [5]: ans = Counter(a.lower())

In [6]: ans
Out[6]: Counter({' ': 2, 'a': 3, 'i': 1, 'k': 1, 'm': 2, 'n': 1, 'y': 1})

In [10]: ans['a']
Out[10]: 3

这将计算字符串中每个字母(包括元音)的出现情况。这应该非常有效。