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

Python报IndexError: list index out of range的原因及修复方法

错误原因
  • 核心触发点:random.randint(0, len(list))的取值范围包含了len(list)。Python中random.randint(a, b)返回的是闭区间[a, b]内的整数,而列表的合法索引范围是0 ~ len(列表)-1,当随机结果恰好等于len(list)时,访问list[rand]就会触发IndexError。由于随机数命中len(list)是概率事件,所以错误为偶发,和你观察到的现象一致。
  • 额外不规范问题:使用Python内置类型名list作为自定义变量名,会覆盖内置的list()函数,后续调用内置列表构造方法时会出现异常。
修复方案

有两种可选修复方式:

  1. 调整随机数上界:将random.randint(0, len(list))修改为random.randint(0, len(list)-1),保证索引不越界
  2. 更简洁安全的写法:直接使用random.choice()从目标列表中随机选取元素,不需要手动计算索引范围

修复后完整代码

import random
inp = input('Enter: ')
inp = str(inp)
char = 0
key = []
# 修改变量名,避免覆盖内置list
chars_pool = list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%&*?+-')

if inp == 'New':
    while char < len(chars_pool):
        # 直接用choice无需处理索引,降低出错概率
        key.append(random.choice(chars_pool))
        char = char + 1
print(key)

内容的提问来源于stack exchange,提问作者Caleb Haywood

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 03:36:03