擅长:python、mysql、java
<p>你丢失了一个<code>return m</code>,而且你从不调用</strong><code>numvow</code>;另外,你在整个过程中将<code>m</code>重新分配给<code>s</code>中的单个字符,而不是像你应该的那样使用一个单独的循环变量。所以,有三个很好的理由工作:-). 易于修复:</p>
<pre><code>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))
</code></pre>
<p>我做了另一个改进,删除了对<code>str</code>的一个冗余调用(因为<code>raw_input</code>已经返回了一个字符串,没有理由这样调用),但其他调用还没有,比如将<code>if</code>更改为更简洁、更快速的调用</p>
<pre><code>if c in 'aeiou':
</code></pre>