1

所以我对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'

我不确定如何将上述内容融入函数中。

4

3 回答 3

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)
于 2013-05-08T20:55:04.307 回答
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'}
于 2013-05-08T21:07:36.967 回答
0
a =input("Enter string: ")
vowels = sum([a.lower().count(i) for i in "aeiou"])
print(vowels)

这也有效。不知道效率高还是低。它为每个 aeiou 列出列表并将其相加

于 2018-04-12T03:14:50.563 回答