-3 python string loops for-loop python-2.7
这是我目前拥有的代码:
letter = raw_input("Replace letter?")
traversed = raw_input("Traverse in?")
replacewith = raw_input("Replace with?")
traverseint = 0
for i in traversed:
traverseint = traverseint + 1
if i == letter:
traversed[traverseint] = replacewith
print i
print(traversed)
Run Code Online (Sandbox Code Playgroud)
str在python中本质上是不可变的。这意味着,您不能修改现有对象。例如:
>>> 'HEllo'[3] = 'o'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
Run Code Online (Sandbox Code Playgroud)
为了替换字符串中的字符,理想的方法是使用str.replace()方法。例如:
>>> 'HEllo'.replace('l', 'o')
'HEooo'
Run Code Online (Sandbox Code Playgroud)
不使用str.replace(),您可以通过使用临时字符串来运行您的程序:
my_str = '' # Temporary string
for i in traversed:
# traverseint = traverseint + 1 # Not required
if i == letter:
i = replacewith
my_str += i
Run Code Online (Sandbox Code Playgroud)
此处my_str将保存已转换的值traversed。或者,更好的方法是将字符串转换为list(如@chepner 所述),更新列表的值,最后加入list以取回字符串。例如:
traversed_list = list(traversed)
for i, val in enumerate(traversed_list):
if val == letter:
traversed_list[i] = replacewith
print i
my_str = ''.join(traversed_list)
Run Code Online (Sandbox Code Playgroud)