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

Python开发Flappy Bird复刻版遭遇KeyError:0错误求助

解决Flappy Bird复刻版中的KeyError: 0问题

错误原因分析

KeyError: 0说明你尝试访问upperObs的键/索引0,但这个位置不存在对应的元素:

  • 你的代码if 0<upperObs[0]['x']<5:默认upperObs是包含索引0的列表,但实际它可能是空列表,或者被错误初始化为字典(字典用键而非数字索引访问)。

分步解决方案

1. 先排查upperObs的真实结构

在出错代码行前添加调试代码,打印它的类型和当前值,明确问题根源:

# 放在if 0<upperObs[0]['x']<5:之前
print("upperObs类型:", type(upperObs))
print("upperObs内容:", upperObs)

2. 如果upperObs应该是列表(存储多个障碍物)

  • 检查初始化代码:确保upperObs被初始化为列表,而非字典:
    # 正确初始化
    upperObs = []
    
  • 检查添加障碍物的逻辑:用append()方法向列表中添加障碍物字典,而非字典赋值:
    # 正确添加障碍物
    upperObs.append({'x': 屏幕宽度, 'y': 随机高度})
    
  • 添加空值判断:访问索引0前先确认列表非空,避免索引越界:
    if upperObs and 0 < upperObs[0]['x'] < 5:
        # 原有的后续逻辑
    

3. 如果upperObs确实是字典

  • 确认字典的键名,改用正确的键访问x值,比如键是字符串'obs':
    if 0 < upperObs['obs']['x'] < 5:
    
  • 若场景需要存储多个障碍物,建议将upperObs改为列表,更符合Flappy Bird多障碍物的设计逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 16:17:13