def anti_vowel(text):
p=''
for c in text:
if c=='a' or c=='A':
break
elif c=='e' or c=='E':
break
elif c=='i' or c=='I':
break
elif c=='o' or c=='O':
break
elif c=='u' or c=='U':
break
else:
p=p+c
print(anti_vowel('Hello you'))
答案 0 :(得分:3)
您在功能结束时忘记返回 p
:
def anti_vowel(text):
p=''
for c in text:
if c=='a' or c=='A':
break
elif c=='e' or c=='E':
break
elif c=='i' or c=='I':
break
elif c=='o' or c=='O':
break
elif c=='u' or c=='U':
break
else:
p=p+c
return p
如果没有最后一行,那么您将要打印的是None
,这是没有明确return
语句的函数的默认返回值。
当然,只要找到任何元音,你的函数就会打印出第一个辅音,因为break
结束循环。它永远不会扭转字符串。对于您的示例输入,函数返回'H'
,因为输入中的下一个字母是元音,然后break
结束循环。
您可以轻松地重写您的函数以使用str.lower()
和遏制测试:
def anti_vowel(text):
p = ''
for c in text:
if c.lower() in 'aeiou':
break
p += c
return p
这也是一样的,返回第一个辅音('H'
作为样本输入。)
如果你想反转字母,和排除元音,请不要使用break
并反转放置剩余字母的位置。您可以使用continue
代替,或者更简单地说,只需反转if
测试,如果不元音,则只处理chararter:
def anti_vowel(text):
p = ''
for c in text:
if c.lower() not in 'aeiou':
p = c + p
return p
现在辅音被放置在之前任何前面的辅音,反转文字:
>>> def anti_vowel(text):
... p = ''
... for c in text:
... if c.lower() not in 'aeiou':
... p = c + p
... return p
...
>>> anti_vowel('Hello you')
'y llH'