0

在下面给出的列表中,phrase我想按升序打印最常用的元音。

我在下面写了这段代码,但我不知道如何计算元音并按升序打印它们。

我不确定len并认为需要更改代码,并添加升序。

phrase= ['world','good','question']
def phrase():
    vowels = ('a','u','i','o','e')
    count=0
    for i in range(0,len(phrase)):
        if phrase[i]==vowels[i]:
            count=count+1
            print (count)
phrase()
4

2 回答 2

6

你想用collections.Counter(); 它会为你计算:

from collections import Counter

def count_vowels(phrase):
    vowel_counts = Counter()
    vowels = set('auioe')

    for word in phrase:
        vowel_counts.update(c for c in word if c in vowels)

    for vowel, count in vowel_counts.most_common():
        print '{}: {}'.format(vowel, count)

我将 aset()用于元音,因为这样可以加快成员资格 ( in) 测试。

请注意,您不能将函数和列表命名相同;phrase()替换了列表phrase。将函数命名为不同的名称。

演示:

>>> count_vowels(['world','good','question'])
o: 4
i: 1
e: 1
u: 1
>>> count_vowels('the quick brown fox jumped over the lazy dog'.split())
e: 4
o: 4
u: 2
i: 1
a: 1
于 2013-05-23T21:17:42.510 回答
0

有一个内置的东西。叫count

我想你想要这样的东西:

def countVowels(word): # Where word is a string
    counted = {'a':0,'e':0,'i':0,'o':0,'u':0} #dictionary to store counts in
    vowels = ['a','e','i','o','u'] # this line could also be vowels = counted.keys()...lol
    for letter in word:
         for vowel in vowels:
              counted[vowel] = word.count(vowel)
    return counted

如果你想在一个列表上迭代它......就做

for word in listOfWords:
    print word , countVowels(item)

我发现自己经常做的事情是,当我需要在一个列表中完成一堆事情时,我会确保我可以完美地完成一个示例......然后我将它们放在一个列表中并在其上绑一个 for 循环。

于 2013-05-23T23:34:12.687 回答