将字符串作为输入并计算元音在字符串中出现的次数的函数

时间:2013-05-08 20:46:58

标签: python

所以我对python很新,并且正在学习基础知识。我正在尝试创建一个函数来计算字符串中元音的数量,并返回每个元音在字符串中出现的次数。例如,如果我给它输入这个,那就是打印出来的。

   >>>countVowels('Le Tour de France') 
       a, e, i, o, and u appear, respectively, 1,3,0,1,1 times.

我使用了这个帮助函数,但是我不确定如何使用它。

def find_vowels(sentence):
count = 0
vowels = "aeiuoAEIOU"
for letter in sentence:
    if letter in vowels:
        count += 1
print count

然后我想也许我可以使用格式化来将它们放在写入位置,但我不确定将使用的符号,例如,函数的其中一行可能是:

   'a, , i, o, and u appear, respectively, {(count1)}, {(count2)}, {(count3)}, {(count4)}, {(count5)} times'

我不确定如何在函数中使用上述内容。

3 个答案:

答案 0 :(得分:2)

您需要使用字典来存储值,因为如果您直接添加计数,则会丢失有关您正在计算的元音的信息。

def countVowels(s):
    s = s.lower() #so you don't have to worry about upper and lower cases
    vowels = 'aeiou'
    return {vowel:s.count(vowel) for vowel in vowels} #a bit inefficient, but easy to understand

另一种方法是:

def countVowels(s):
    s = s.lower()
    vowels = {'a':0,'e':0,'i':0,'o':0,'u':0}
    for char in s:
        if char in vowels:
            vowels[char]+=1
    return vowels

打印这个,你会这样做:

def printResults(result_dict):
    print "a, e, i, o, u, appear, respectively, {a},{e},{i},{o},{u} times".format(**result_dict)

答案 1 :(得分:1)

更简单的答案是使用Counter类。

def count_vowels(s):
    from collections import Counter
    #Creates a Counter c, holding the number of occurrences of each letter 
    c = Counter(s.lower())
    #Returns a dictionary holding the counts of each vowel
    return {vowel:c[vowel] for vowel in 'aeiou'}

答案 2 :(得分:0)

a =input("Enter string: ")
vowels = sum([a.lower().count(i) for i in "aeiou"])
print(vowels)

这也有效。不知道它是否效率更高或更低。它为每个aeiou制作清单并将其总结