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()

为什么当我尝试运行它时,它告诉我未定义计数。而且我知道有很多这样的问题,但我是函数的新手,可以使用帮助。

最佳答案

因为 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"))

关于python-3.x - 在python中计算元音,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19237791/

10-14 08:48