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

如何解决Python十五拼图程序TypeError: 'set' object is not subscriptable报错

问题原因

你代码的报错根源出在Tablero.py的__init__方法里,你把空白格的坐标esp_vacio定义成了集合(set)类型:

self.esp_vacio = {MAX_FIL - 1, MAX_COL - 1}

Python里的集合是无序且不支持下标索引的,你后续在mover方法里用esp_vacio[0]、esp_vacio[1]去取横纵坐标的操作,对集合类型是非法的,所以会抛出TypeError: 'set' object is not subscriptable的报错。

修复方法

只需要把esp_vacio的初始化代码改成用列表(方括号)即可:

# 把原来的大括号{}改成方括号[]
self.esp_vacio = [MAX_FIL - 1, MAX_COL - 1]

修改后再运行代码,按上方向键的逻辑就能正常执行了。

额外优化建议

  • 你当前的__repr__方法内部直接做了打印,不符合Python魔法方法的规范,建议把打印逻辑移到其他方法,__repr__只返回格式化好的棋盘字符串,避免后续调用print(t)的时候出现重复打印的问题。
  • 其他方向键的移动逻辑可以直接复用已经写好的mover_xxxx方法,不用单独写打印语句。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:45:03