считая последовательность предметов, питон - PullRequest
1 голос
/ 08 декабря 2010

Задача состоит в том, чтобы определить функцию count_vowels(text), которая принимает строку 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})

Итак, что не так с моим кодом и как получить тот же результат, что и в примере?

Ответы [ 5 ]

2 голосов
/ 08 декабря 2010

Если вы используете 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
2 голосов
/ 08 декабря 2010
return '\n'.join( '%s: %s' % item for item in counts.items())
1 голос
/ 08 декабря 2010

Я бы попробовал:

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
1 голос
/ 08 декабря 2010

Результат тот же.Вы имеете в виду, как форматируется результат?Напишите некоторый код в конце функции, которая преобразует полученный словарь в строку в правильном формате.

0 голосов
/ 08 декабря 2010

Здесь вы возвращаете весь словарь целочисленного типа, я думаю. Попробуйте перебрать словарь и напечатать каждый ключ, чтобы отформатировать его так, как вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...