2015-09-13 4 views
1

Я начинаю, и я пытаюсь выяснить количество гласных в каждом слове в строке. Например, если у меня есть "Hello there WORLD", я хочу получить вывод [2, 2, 1].подсчет числа гласных в слове в строке

О, и я использую Python.

меня это до сих пор

[S.count(x) in (S.split()) if x is 'AEIOUaeiou'] 

где S="Hello there WORLD"

но продолжает говорить об ошибке. Любые намеки?

+3

возможно дубликат [Count появление символа в строке] (http://stackoverflow.com/questions/1155617/count-occurrence-of-a-character-in-a-string) – Andy

+0

Что пока не работает для вас? –

+3

'[sum (1 для char в слове if char.lower() в наборе ('aeiou')) для слова в string.split()]' –

ответ

0

Очевидно, что S в S.count и S в ДЕЛЕНИИ не может быть таким же, S. Я предлагаю использовать более семантические имена.

>>> phrase = 'Hello there WORLD' 
>>> [sum(letter.casefold() in 'aeiouy' for letter in word) for word in phrase.split()] 
[2, 2, 1] 
1
x is 'AEIOUaeiou' 

Это проверяет, является ли x точно такой же объект, как 'AEIOUaeiou'. Это почти никогда не то, что вы хотите, когда сравниваете объекты. например следующее может быть False:

>>> a = 'Nikki' 
>>> b = 'Nikki' 
>>> a is b 
False 

Хотя, это может быть True как иногда Python оптимизирует одинаковые строки на самом деле использовать один и тот же объект.

>>> a == b 
True 

Это всегда будет True как значений сравниваются, а не идентичность объектов.

То, что вы, вероятно, хотите есть:

x in 'AEIOUaeiou' 
Смежные вопросы