我有一个用于检查字符串中有多少个元音的函数,但是每当我运行它时,都会出现list index out of range
错误。我环顾四周,发现通常的解决方法是执行range(len())
,但是我已经在这样做了。我该怎么办?
def count_vowels(message):
new_message = message.lower()
vowels = ['a', 'e', 'i', 'o', 'u']
x = 1
for char in range(len(new_message)):
output = new_message.count(vowels[x])
x += 1
return output
答案 0 :(得分:1)
修复了我在评论中提到的一堆错误之后,您的代码可能如下所示:
def count_vowels(message):
message = message.lower()
vowels = 'aeiou'
output = 0
for char in vowels:
output += message.count(char)
return output
但是,您通过为每个元音调用count
来遍历字符串5次。取而代之的是,您可以遍历消息一次并记录所有的元音:
def count_vowels(message):
message = message.lower()
vowels = {'a','e','i','o','u'}
output = 0
for char in message:
if char in vowels:
output += 1
return output
通过使用生成器表达式和库函数sum
,可以使后者更紧凑,因为对于元音和char in vowels
,True
是False
(1)({0 ):
def count_vowels(message):
vowels = {'a','e','i','o','u'}
return sum((char in vowels) for char in message.lower())