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

Python列表索引越界问题求助:模拟备考代码报错排查

问题分析与代码修正

错误原因

  • 列表初始化错误:[] * q 无法创建长度为q的列表,空列表乘以任何数值结果仍是空列表,导致qList、sList始终为空,后续通过索引赋值时直接触发越界错误。
  • 随机索引范围错误:randint(0, len(qList)) 会生成包含len(qList)的整数,而列表的最大有效索引是len(qList)-1,访问qList[x]必然越界。
  • 列表元素添加方式错误:Python不允许直接给空列表/长度不足的列表通过索引赋值(如sList[i] = ...),必须使用append()方法添加元素。
  • 逻辑与拼写错误:pList的循环用索引i匹配问题编号,逻辑完全错误;apppend是拼写错误,正确写法为append。

修正后的代码

import random

# 自定义总题数和复习题数
q = 10
s = 5

# 问题列表:生成1到q的所有题目编号
qList = [i + 1 for i in range(q)]

# 已复习问题列表:随机从qList中选s个题目
sList = []
for _ in range(s):
    # 直接选元素避免索引操作错误
    question = random.choice(qList)
    sList.append(question)
    # 若需复习不重复题目,取消下面两行注释
    # qList.remove(question)
    # q -= 1

# 通过问题列表:此处默认复习过的题目都通过,可按需调整逻辑
pList = sList.copy()

# 输出结果
print("问题列表:", qList)
print("已复习问题列表:", sList)
print("通过问题列表:", pList)

代码说明

  • 问题列表qList:用列表推导式直接生成目标编号,避免初始化阶段的错误。
  • 已复习列表sList:用random.choice()直接选取元素,无需手动处理索引,彻底规避越界风险;如果需要保证复习题目不重复,可启用注释部分的移除逻辑。
  • 通过列表pList:此处采用“复习即通过”的简单逻辑,你可以根据需求修改(比如按比例随机筛选通过题目)。

内容的提问来源于stack exchange,提问作者Ray Favaza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 03:25:15