任何人都可以告诉我这个脚本有什么问题。我是一个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()
答案 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')