1

タスクはcount_vowels(text)、 string を受け取り、textテキスト内の母音をカウントし (カウントには Python 辞書を使用)、母音の頻度情報を文字列として返す関数を定義することです。例:

>>> count_vowels('count vowels')
'e: 1\nu: 1\no: 2'
>>> print count_vowels('count vowels')
e: 1
u: 1
o: 2

これまでのところ、私は思いついた:

>>> def count_vowels(text):
    counts = nltk.defaultdict(int)
    for w in text:
        if w in 'aeoiu':
            counts[w] += 1
    return counts


>>> count_vowels('count vowels')
defaultdict(<type 'int'>, {'e': 1, 'u': 1, 'o': 2})

では、私のコードの何が問題なのですか?どうすれば例と同じ結果を得ることができますか?

4

5 に答える 5

2
return '\n'.join( '%s: %s' % item for item in counts.items())
于 2010-12-07T21:47:47.070 に答える
2

Python 2.7 を使用している場合は、カウンターを使用してみてください。

from collections import Counter
counts = Counter(c for c in 'count vowels' if c in 'aeoiu')
for k, v in counts.iteritems():
    print k, v

これにより、次の出力が得られます。

e 1
u 1
o 2

以前のバージョンの Python を使用している場合でも、defaultdict を使用でき、同じiteritems()ループを使用できます。

for k, v in counts.iteritems():
    print k, v
于 2010-12-07T21:48:21.607 に答える
1

結果は同じです。結果がどのようにフォーマットされるかについて言及していますか?関数の最後に、結果の辞書を正しい形式の文字列に変換するコードを記述します。

于 2010-12-07T21:42:51.093 に答える
1

私は試してみます:

def count_vowels(text):
vowels = 'aeiou'
counts ={}
s = ''
for letter in text:
    if letter in vowels:
        if letter in counts:
            counts[letter] += 1
        else:
            counts[letter] = 1
for item in counts:
    s = s + item + ': ' + str(counts[item]) + '\n'
return s[:-1]

これは以下を出力します:

>>> count_vowels('count vowels')
'e: 1\nu: 1\no: 2'
>>> print count_vowels('count vowels')
e: 1
u: 1
o: 2
于 2010-12-08T01:32:13.397 に答える
0

ここでは、整数型の辞書全体を返していると思います。辞書を反復処理し、各キーを印刷して、必要に応じてフォーマットしてみてください。

于 2010-12-07T21:44:20.563 に答える