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)

メンバーシップ ( ) のテストset()を高速化するため、母音にa を使用しました。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)

私がよくやっていることは、リストに対して多くのことを行う必要があるときです。1つの例に完全に対応できるようにします...次に、それらをリストに平手打ちし、その上にforループをストラップします。

于 2013-05-23T23:34:12.687 に答える