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

为何出现IndexError: string index out of range?附数字比较得分代码

错误原因及修正方案

核心错误原因(索引越界)

你的字符串长度为length,合法索引范围是0到length-1,但代码里设置maxs = length + 1,循环会执行length+1次。当n递增到length-1时,n+1等于length,超出了字符串的最大索引,直接触发IndexError: string index out of range。

另外,实际需要比较的相邻数字对数量是length-1(比如4个数字只需要比3次),你的循环次数完全错误。

其他问题

  • 逻辑颠倒:题目要求「当前数字小于前一位则得分加1」,但代码里if list[n+1]<list[n]时不加分,反而else分支加分,完全和需求相反。
  • 变量命名冲突:用Python内置类型list当变量名,会覆盖内置的list()函数,后续如果用到列表操作会出问题。
  • 缩进错误:if分支里的n = n +1和test = test +1缩进不正确,属于语法错误。

修正后的代码

# 改用有意义的变量名,避免覆盖内置类型
num_str = input('Enter your list(number only) : ')

def scorefunction(initial_score):
    length = len(num_str)
    # 相邻数字对的数量是长度减1
    compare_count = length - 1
    score_final = initial_score
    n = 0
    while n < compare_count:
        # 当前数字小于前一位,得分加1
        if num_str[n+1] < num_str[n]:
            score_final += 1
        n += 1
    return score_final 

print(scorefunction(0))

测试示例:输入5823时,比较8>5(不加分)、2<8(加1)、3>2(不加分),最终得分1,符合你给出的示例结果。

内容的提问来源于stack exchange,提问作者sokunn S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 20:12:43