计算python中的元音

时间:2013-10-08 01:54:14

标签: python-3.x

def main():
    print(count)


def countVowels(string):
    vowel=("aeiouAEIOU")
    count=0
    string=input("enter a string:")
    for i in string:
        if i in vowel:
            count +=1
main()

为什么它告诉我在尝试运行它时没有定义计数。我知道这些问题有多个,但我是新手,可以使用帮助。

2 个答案:

答案 0 :(得分:6)

因为count已在countVowels中定义。您应该让该函数执行计数,然后返回计数,并在其他地方请求输入:

import re

def count_vowels(string):
    vowels = re.findall('[aeiou]', string, re.IGNORECASE)
    return len(vowels)

string = input("Enter a string:")
print count_vowels(string)

答案 1 :(得分:5)

因为count是局部变量。它仅针对countVowels函数定义。此外,您只定义countVowels函数,但从不运行它。因此即使在该函数中也永远不会创建count ...

您可以这样做:

def main(x):
    print(x)

def countVowels():
    vowels = "aeiouAEIOU"
    count = 0
    string = raw_input("enter a string:")
    for i in string:
        if i in vowels:
            count += 1
    return count

main(countVowels())

此处countVowels返回计数,然后您可以打印它或将其分配给变量或使用它做任何您想做的事情。你还有一些其他错误我修复了...即,函数参数string没有用,因为你实际将它作为用户输入。

在另一个主题上,你可以让你的计数更加pythonic:

sum(letter in vowel for letter in string)

另外,在这里我不认为需要创建一个全新的功能来打印你的结果......只需做print(countVowels())就可以了。

另一个改进是只关心小写字母,因为你没有真正区分它们:

vowels = "aeiou"
string = string.lower()

如果您不想接受用户输入,而是想要计算给定单词中的元音,您可以这样做(包括上述改进):

def countVowels(string):
    vowels = "aeiou"
    string = string.lower()
    return sum(letter in vowel for letter in string)

print(countVowels("some string here"))