反转字符串时出现IndexError: list index out of range错误求助
解决列表索引越界问题
嘿,这个问题很好排查!咱们先看看为啥会触发IndexError:
问题根源
Python里列表/字符串的索引是从0开始的。比如你传入的字符串长度是n,那它对应的列表s的有效索引范围是0到n-1。你原代码里一开始把x设成了len(str)(也就是n),第一次循环就去访问s[x],这明显超出了列表的有效索引范围,自然就报错啦。
修复方案
方案1:修正循环的起始索引
调整x的初始值,同时把函数改成返回反转后的字符串(原代码直接print字符,最后函数返回None,不符合函数的设计逻辑):
def FirstReverse(str): # 把初始x改成len(str)-1,对应最后一个字符的索引 x = len(str) - 1 s = list(str) reversed_str = "" while x >= 0: reversed_str += s[x] x = x - 1 return reversed_str # 调用函数并打印结果 print(FirstReverse(raw_input()))
方案2:用Pythonic的写法简化代码
Python里反转字符串有超级简洁的切片写法,一行就能搞定,完全不用手动写循环:
def FirstReverse(str): # 切片[::-1]表示从后往前取所有字符,实现反转 return str[::-1] print(FirstReverse(raw_input()))
这样两种方式都能解决你的索引越界问题,而且第二种写法更符合Python的风格哦~
内容的提问来源于stack exchange,提问作者Surferonacid
相关产品推荐
相关产品推荐

