这段代码有什么问题?目的是检查输入的字符串是否包含元音并删除它们
以下是代码:
def anti_vowel(text):
text = str(text)
vowel = "aeiouAEIOU"
for i in text:
for i in vowel.lower():
text = text.replace('i',' ')
for i in vowel.upper():
text = text.replace('i',' ')
return text
这是关于Codecademy的课程
答案 0 :(得分:3)
您正尝试将字符串替换为值 'i'
,而不是变量i
的内容。
您的代码效率也很低;你不需要遍历text
中的每个角色; vowel
上的循环就足够了。因为您已经包含大写和小写版本,所以在小写和大写版本上的两个循环实质上是检查每个元音 4次。
以下就足够了:
def anti_vowel(text):
text = str(text)
vowel = "aeiouAEIOU"
for i in vowel:
text = text.replace(i,' ')
return text
您也在用空格替换元音,而不仅仅是删除它们。
删除(而不是替换)所有元音的最快方法是使用str.translate()
:
def anti_vowel(text):
return text.translate(text.maketrans('', '', 'aeiouAEIOU'))
str.maketrans()
static method生成一个映射,该映射将删除第三个参数中命名的所有字符。