You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PY4E练习6.1问题:反向遍历字符串代码为何触发索引越界?

反向遍历字符串的while循环索引越界问题解析

错误原因

你的代码里循环条件index < len(fruit)逻辑有误。以fruit = "apple"为例,len(fruit)等于5,你从index = -1开始,每次循环索引减1,依次变成-2、-3、-4、-5——这时候还满足index < 5的条件,循环会继续执行,当index变成-6时,fruit[-6]超出了字符串的负索引范围(Python字符串负索引的最小值是-len(fruit),也就是-5),所以触发了string index out of range错误。

你之前尝试的index > len(fruit)之所以没有输出,是因为初始索引-1远小于5,循环条件从一开始就不成立,循环根本没执行。

解决方法

有两种简单的修复方式:

方法一:修正负索引的循环条件

让索引不小于字符串的最小负索引值:

fruit = "apple"
index = -1
while index >= -len(fruit):
    letter = fruit[index]
    print(letter)
    index = index - 1

当index等于-len(fruit)(也就是-5)时,刚好取到第一个字符'a',执行后索引变成-6,不满足>= -5的条件,循环终止,不会触发越界。

方法二:改用正索引反向遍历

从最后一个正索引(len(fruit)-1)开始,遍历到索引0:

fruit = "apple"
index = len(fruit) - 1
while index >= 0:
    letter = fruit[index]
    print(letter)
    index = index - 1

正索引的有效范围是0到len(fruit)-1,当索引减到-1时,循环条件不成立,自然终止,不会访问无效索引。

内容的提问来源于stack exchange,提问作者getuser.name

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 19:17:10