我正在尝试手动(没有内置函数)反转一串文本,但代码为list_rev[u] = list_[i]
提供了“列表分配索引超出范围”。我不明白为什么会这样?我要做的是从list_
获取文本,然后以相反的顺序将其放在list_rev
中,然后打印list_rev
。
谢谢!
text = raw_input("Word?")
text = str(text)
def reverse(text):
list_rev = []
list_ = []
length = int(len(text))
k = 0
while k < (length):
list_.append(str(text)[k])
k += 1
i = int(length-1)
u = 0
while i >= 0:
list_rev[u] = list_[i]
u += 1
i -= 1
return list_rev,
print reverse(text)
答案 0 :(得分:1)
您从表达式list_rev[u]
收到错误“列表分配索引超出范围”,因为索引(u
)超出了范围0 .. len(list_rev)-1
。特别是,list_rev
为空,因此u
没有可能的值引用list_rev
的有效元素。
如果您要将 new 元素添加到list_rev,请尝试.append()
,.extend()
或.insert()
。
答案 1 :(得分:0)
您可以将字符附加到列表中:
text = raw_input("Word?")
text = str(text)
def reverse(text):
list_rev = []
list_ = []
length = int(len(text))
k = 0
while k < (length):
list_.append(str(text)[k])
k += 1
i = int(length-1)
u = 0
while i >= 0:
list_rev.append(list_[i])
i -= 1
return list_rev,
print reverse(text)
输出:
Word?qwerty
(['y', 't', 'r', 'e', 'w', 'q'],)
答案 2 :(得分:0)
list_rev是一个空列表:你必须追加char:
text = raw_input("Word?")
text = str(text)
def reverse(text):
list_rev = []
list_ = []
length = int(len(text))
k = 0
while k < (length):
list_.append(str(text)[k])
k += 1
i = int(length-1)
u = 0
while i >= 0:
list_rev.append( list_[i] )
u += 1
i -= 1
return list_rev
print ''.join( str(elem) for elem in reverse(text) )
答案 3 :(得分:0)
您也可以使用insert,
简单地解决此问题def reverse(text):
reverse_list = []
for a in text:
reverse_list.insert(0,a)
return "".join(reverse_list)
text = raw_input("Word?")
reverse_text = reverse(text)
print reverse_text
答案 4 :(得分:0)
另一个使用字符串的选项;
def reverse(text):
reversed = ''
for index in range(len(text)-1, -1, -1):
reversed += text[index]
return reversed