这是我的代码:
def reverse(text):
intermediate = []
opposite = []
intermediate.append(text)
size = len(intermediate)
while len(intermediate) > 0:
opposite.append(intermediate[-1])
intermediate[:-1] ` <---
return opposite
箭头标记的行是我尝试删除中间列表中的最后一个字符的位置。有些东西似乎不起作用......
答案 0 :(得分:0)
在python中,字符串是不可变的。您必须将修剪后的字符串设置回原始字符串:
intermediate = intermediate[:-1]
另请注意,当您返回opposite
时,它不会是字符串,而是字符列表。您可以将其转换为如下字符串:
return ''.join(opposite)
修改强> 的
好的,看看你的代码,你不仅仅是语法错误:
def reverse(text):
intermediate = []
opposite = []
intermediate.append(text) # <-- this line makes intermediate a list with one element: ['input_text']
# you want intermediate = str(text) (cast it to make a copy)
# as it is, you will just pass this string from one list to another, and return
size = len(intermediate) # you don't need this
while len(intermediate) > 0:
opposite.append(intermediate[-1])
intermediate[:-1] # your string immutability problem
return opposite # your list/string confusion
总而言之,你想要的是:
def reverse(text):
opposite = []
intermediate = str(text)
while len(intermediate) > 0:
opposite.append(intermediate[-1])
intermediate = intermediate[:-1]
return ''.join(opposite)
编辑2: 另外,为了避免这种混淆,我会坚持只使用字符串或仅列表,在这种情况下,不需要列表所有:
def reverse(text):
opposite = ''
intermediate = str(text)
while len(intermediate) > 0:
opposite += intermediate[-1]
intermediate = intermediate[:-1]
return opposite