我正在学习代码学院的Python课程,并尝试创建一个python函数,该函数删除字符串中的元音并返回新修改的字符串。但是,该函数返回的字符串未经任何修改(即,如果我调用anti_vowel(“ abcd“)它返回” abcd“)
使用print语句后,无论字符串的长度如何,for循环仅运行一次。
def anti_vowel(string):
for t in string:
if(t.lower()=='a' or t.lower()=='e' or t.lower()=='i' or t.lower()=='u'):
string.replace(t, " ")
print "test"
print string
return string
答案 0 :(得分:0)
Python中的字符串是不可变的,因此您需要使用RHS上的替换内容将其分配回原始字符串:
if (t.lower()=='a' or t.lower()=='e' or t.lower()=='i' or t.lower()=='u'):
string = string.replace(t, " ")
但是,您也可以在这里re.sub
:
string = re.sub(r'[aeiou]+', '', string, flags=re.IGNORECASE)
答案 1 :(得分:-1)
您在for循环中包含return
语句,这就是为什么您的代码循环仅执行一次的原因。将其放在循环之外,您的代码将正常工作。
def anti_vowel(string):
for t in string:
if(t.lower()=='a' or t.lower()=='e' or t.lower()=='i' or t.lower()=='u'):
string.replace(t, " ")
print "test"
print string
return string
要替换元音字符,您不能替换现有变量,因为python中的字符串是不可变的。你可以试试这个
def anti_vowel(string):
for t in string:
if(t.lower()=='a' or t.lower()=='e' or t.lower()=='i' or t.lower()=='u'):
string=string.replace(t, " ")
print "test"
print string
return string