在下面的示例中,我预计会出现错误,指出字符串赋值是不可能的,因为字符串是不可变的。相反,循环返回原始字符串。
a = "AECD"
for i in a:
if i == "E":
a.replace(i, "B")
print(a)
替换不是基本上尝试做与[1] =“B”相同的事情吗?这与使用赋值创建新对象与使用replace修改现有对象有关吗?
答案 0 :(得分:0)
试试这个:
a = "AECD"
for i in a:
if i == "E":
b = a.replace(i, "B")
print (b)
print(a)
答案 1 :(得分:0)
a.replace(i, "B")
不会更改原始字符串a
。相反,它会返回在i
中替换a
而产生的字符串。
在你的循环中,你只是在评估表达式并将其放在地板上。
你可以这样做:
a = "AECD"
for i in a:
if i == "E":
a = a.replace(i, "B")
print(a)
在此版本中,您将带有替换字符串,并将该值分配给变量a
,这样可以获得您期望的效果。
答案 2 :(得分:0)
由于您没有进行字符串赋值,因此这不是错误。正在创建一个新字符串,并由str.replace()
方法返回。但是,你没有把它分配给任何东西而把它扔掉。