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

运行RollDieDynamic.py报index out of range错误求助

RollDieDynamic.py索引越界问题排查修复

你遇到的IndexError: list index out of range报错和核心掷骰子、绘图逻辑无关,问题出在启动参数读取环节。

根因定位

报错对应的是以下两行代码:

number_of_frames = int(sys.argv[1])  
rolls_per_frame = int(sys.argv[2])  
  • 这个脚本的原始设计是必须通过命令行传入2个启动参数运行:第一个参数是动画总帧数,第二个是单帧内掷骰子的次数,参数会按顺序存在sys.argv列表中
  • sys.argv列表默认索引0的元素是脚本自身的文件路径,你直接在PyCharm中点击运行按钮启动时,没有传入额外参数,列表长度只有1,此时强行取索引1、2的元素必然触发索引越界。

修复方案(二选一即可)

  • 方案1:配置PyCharm运行参数(匹配原书使用逻辑)
    1. 点击PyCharm右上角运行配置的下拉箭头,选择「Edit Configurations...」
    2. 选中当前运行的RollDieDynamic.py配置项,在「Parameters」输入框填入两个空格分隔的整数,比如600 10,代表总共渲染600帧动画,每帧掷10次骰子
    3. 保存配置后重新运行脚本即可
  • 方案2:给代码增加默认值,无需传参直接运行
    直接替换原有的命令行参数读取代码,增加无参数时的默认逻辑:
    # 未传命令行参数时,默认运行600帧、每帧掷10次
    number_of_frames = int(sys.argv[1]) if len(sys.argv) > 1 else 600
    rolls_per_frame = int(sys.argv[2]) if len(sys.argv) > 2 else 10
    

其他常见运行坑点

  • 如果修复参数问题后,在sns.barplot行报错,是因为你安装的seaborn版本过高,新版本不支持直接传入位置参数,把该行修改为显式指定x、y参数即可:
    axes = sns.barplot(x=faces, y=frequencies, palette='bright')
    
  • 你粘贴的源码存在多处被换行截断的字符串、错误缩进(比如f-string标题、函数注释被拆成了多行),运行前要保证所有代码块缩进正确、字符串没有被强行换行拆分,否则会触发语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 22:18:56