我试图仅使用基本循环来计算元音的数量,而我得到的唯一输出是0
s= str(raw_input("Enter a string of characters:"))
m =0
def numvow(s,m):
for m in s:
if m == 'a'or m =='e' or m =='i' or m =='o' or m =='u':
m+=1
print("The number of vowels is " +str(m))
答案 0 :(得分:1)
您错过了return m
,也从未致电 numvow
;另外,您将整个m
重新分配给s
中的单个字符,而不是使用单独的循环变量。所以,三个很好的理由它不起作用:-)。易于修复:
s = raw_input("Enter a string of characters:")
m = 0
def numvow(s,m):
for c in s:
if c == 'a' or c =='e' or c =='i' or c =='o' or c =='u':
m+=1
return m
m = numvow(s, m)
print("The number of vowels is " +str(m))
我通过删除对str
的一个冗余调用进行了另一项改进(因为raw_input
已经返回一个字符串,没有理由进行该调用)但还没有其他人,例如将if
更改为更简洁的&更快
if c in 'aeiou':
答案 1 :(得分:1)
你有很多错误
m
程序的最小编辑将是
s= str(raw_input("Enter a string of characters:"))
c =0
def numvow(s,c):
for m in s:
if m == 'a'or m =='e' or m =='i' or m =='o' or m =='u':
c+=1
return c
c = numvow(s,c)
print("The number of vowels is " +str(c))
一些提示
format
进行连接"The number of vowels is {}".format(c)
raw_input
返回str
,因此广告if m in ('a','b','c','d','e'):
简短而简单答案 2 :(得分:0)
您有全局m
和参数m
。整数是不可变的,因此删除全局和参数m
,为计算创建一个本地参数,并在函数末尾创建return m
。使用与计数器不同的循环变量。然后实际调用函数:)
def numvow(s):
m = 0
for c in s:
if c in 'aeiou':
m+=1
return m
s= raw_input("Enter a string of characters: ")
m = numvow(s)
print "The number of vowels is",m
输出:
Enter a string of characters: abcdefg
The number of vowels is 2
答案 3 :(得分:0)
首先,你不需要在这里使用一个功能,因为它并没有真正为你买任何东西。其次,您使用名称m
来表示两个不同的变量。
s = str(raw_input("Enter a string of characters:"))
m = 0
for l in s:
if l in 'aeiou':
m += 1
print("The number of vowels is " + str(m))
另请注意我是如何使用简单的if m == 'a' or m =='e' ...
支票替换繁琐的in
。