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

Python实现2048出现'NoneType object is not subscriptable'报错如何解决

报错原因与解决方法

NoneType object is not subscriptable 报错的本质是代码尝试对None值执行下标访问操作(比如x[i][j]但x实际为None),结合你提供的compress函数逻辑,常见的触发场景和排查方案如下:

  • 场景1:传入compress的参数mat本身为None
    检查你调用compress前的上游代码,大概率是处理矩阵的前置函数没有正确返回计算后的矩阵,比如写了类似逻辑:
    def handle_mat(mat):
        # 对mat做了一系列修改操作
        # 漏写了return mat语句
    
    调用mat = handle_mat(mat)时会直接把mat赋值为None,再传入compress时执行mat[i][j]就会触发报错。
  • 场景2:compress函数的return语句缩进错误
    你贴出的代码中return是正确和外层循环同级的,如果你实际运行的代码里不小心把return缩到了内层循环或者条件判断中,就会出现某些分支下函数没有返回值、默认返回None的情况,后续取返回值做下标访问就会报错。

快速排查技巧

可以在compress函数第一行加入打印代码确认入参状态:

def compress(mat):
    print("传入的mat值:", mat, "类型:", type(mat)) # 新增排查行
    changed = False
    new_mat = [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]]
    # 剩余原有代码不变

如果打印结果显示mat为None,直接向上溯源给mat赋值的逻辑即可;如果入参正常,检查return语句的缩进位置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:18:01