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()
为什么它告诉我在尝试运行它时没有定义计数。我知道这些问题有多个,但我是新手,可以使用帮助。
答案 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"))