如何查找字符串中的元音数量?

时间:2016-12-17 17:44:48

标签: python

我们想知道给定单词中元音的索引,例如,单词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

4 个答案:

答案 0 :(得分:3)

如果你想要返回元音的索引,那么你应该enumerate这个词。

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

Live example

答案 1 :(得分:1)

试试这个:

.clone(true)

答案 2 :(得分: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

答案 3 :(得分: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]