2016-12-17 3 views
0

Мы хотим знать индекс гласных в данном слове, например, есть два гласных в слове super (вторая и четвертая буквы).Как найти количество гласных в строке?

Так что, учитывая строку «super», мы должны вернуть список [2, 4].

Мой код:

def vowel_indices(word): 
    global vowels 
    global vowelsList 
    vowels = ["a" , "e" , "i" , "o" , "u" , "A" , "E" , "I" , "O" , "U"] 
    vowelsList = [] 
    for letter in word: 
     if letter in vowels: 
      vowelsList.append(letter) 
      print(len(vowelsList)) 

vowel_indices("Anthony") 

Вместо того, чтобы: 2, я получаю: 1 2

+1

И я хочу, чтобы люди перестали спам теги – StoryTeller

+2

Вы должны очистить отступ кода: это имеет решающее значение в Python. Кроме того, ваши переменные 'vowels' и' vowelsList' на самом деле не являются глобальными переменными, и я не вижу причин, чтобы последнее было одним или объявляло первое как одно. Пожалуйста, покажите нам код, который в основном работает, и см. [Как создать минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve). –

+0

Вы печатаете каждый раз, когда видите гласную. – Akavall

ответ

1

Попробуйте это:

>>> import re 
>>> def vowel_indices(word): 
>>> return len(re.findall('[aeiou]', word, re.IGNORECASE)); 
>>> print(vowel_indices("Anthony")); 
2 
3

Если вы хотите вернуть индексы гласных, чем вы должны enumerate слово.

vowelsList = [idx for idx, letter in enumerate(word) if letter in vowels] 

Live example

0

В соответствии с названием вашего вопроса, в найти количество гласных звуков в слове, попробуйте следующее:

len([l for l in word if l in 'aeiouAEIOU']) 

В функции было бы:

def vowels_number(word): 
    return len([l for l in word if l in 'aeiouAEIOU']) 

Пример вывода:

>>> vowels_number('hello') 
2 
>>> 
>>> vowels_number('world') 
1 
>>> 
>>> vowels_number("Anthony") 
2 

Для того, чтобы ваш код работает, это то, что вы можете попробовать:

vowels = 'aeiouAEIOU' 

def vowels_number(word): 
    vowels_list = [] 
    for letter in word: 
     if letter in vowels: 
      vowels_list.append(letter) 
    return len(vowels_list) 

Выход:

>>> vowels_number("Anthony") 
2 
0

Ваш код почти в порядке только две вещи, которые вы ошибались. См. Ниже:

def vowel_indices(word): 
     global vowels 
     global vowelsList 
     vowels = ["a" , "e" , "i" , "o" , "u" , "A" , "E" , "I" , "O" , "U"] 
     vowelsList = [] 
     for index,letter in enumerate(word):#add an index with enumerate 
      if letter in vowels: 
       vowelsList.append(index+1)#add 1 since list/arrays starts from 0 
     print(vowelsList) 

    vowel_indices("Super") 
    vowel_indices("anthony") 

Выход:

[2, 4] 
[1, 5] 
Смежные вопросы