计算元音

时间:2010-05-28 02:52:11

标签: python

任何人都可以告诉我这个脚本有什么问题。我是一个python newb,但我似乎无法弄清楚可能导致它无法运行的原因。

def find_vowels(sentence):

    """
    >>> find_vowels(test)
    1

    """

    count = 0
    vowels = "aeiuoAEIOU"
    for letter in sentence:
        if letter in vowels:
            count += 1
    print count

if __name__ == '__main__':
    import doctest
    doctest.testmod()

7 个答案:

答案 0 :(得分:8)

您正在打印count(一个数字),但您的测试需要字母e

此外,更多Pythonic计算元音的方法是list comprehension

>>> len([letter for letter in 'test' if letter in vowels])
1

想要您找到的元音?只需删除前导len函数:

>>> [letter for letter in 'stackoverflow' if letter in vowels]
['a', 'o', 'e', 'o']

答案 1 :(得分:6)

除了您正在返回计数但期待一串元音时,正如其他人所说,您还必须更改该行

>>> find_vowels(test)

>>> find_vowels('test')

你忘记了引号!

答案 2 :(得分:1)

您的测试期望该函数能够打印它找到的元音,但您打印的是计数。您还要传递变量test而不是字符串'test',您需要这样做

>>> find_vowels('test')

最后,缩进是关闭的,但我认为这是一个粘贴问题

答案 3 :(得分:1)

def count_vowels(word):
'''
str->(number)
returns the number of vowels used
count_vowels('ramesh')
>>>2
count_vowels('sindhu')
>>>2
'''

vowels=list('a,e,i,o,u')
return vowels.count(word)

答案 4 :(得分:0)

你需要缩进find_vowels的主体。

答案 5 :(得分:0)

为什么不使用 str.count() 例如 s ='heeello world'

  
    
      

print str.count(s,'e')       3

    
  

答案 6 :(得分:0)

这个解决方案非常干净,比大型字符串已经发布的解决方案更有效率;艰苦的工作都发生在构建Counter对象的C循环中。

from collections import Counter
vowels = "aeiuoAEIOU"

def count_vowels(txt):
    c = Counter(txt)
    return sum(c[v] for v in vowels)

print count_vowels('testing')