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
相关产品推荐
相关产品推荐

