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

Python二维数组索引报不可调用与IndexError错误原因咨询

错误原因分析
  • 核心错误是二维列表的索引语法使用错误
    Python中访问二维列表元素的标准语法是grid[行索引][列索引],你代码中所有类似grid[[i][j]]、grid[(3)(3)]的写法都是不符合语法规范的:
    1. [i][j]的执行逻辑是先创建一个仅包含元素i的单元素列表[i],再尝试取这个列表的第j位元素。当j >= 1时,单元素列表只有索引0的位置有效,直接触发IndexError索引越界,这就是你收到报错的直接原因。
    2. (3)(3)的执行逻辑是把整数3当成可调用的函数,传入参数3执行,整数类型不支持调用操作,所以会触发'int' object is not callable的不可调用报错。
  • 次要问题是遍历范围不完整
    你定义的grid是4行4列的结构,合法索引范围是0~3,但你的循环写的是range(0,3),实际只会遍历到索引2,最后一行和最后一列的元素不会被处理,需要修改为range(4)才能覆盖全部网格。
  • 额外语法问题
    你定义的gridTile类中draw方法下的w.create_rectangle代码没有正确缩进,会触发语法错误,需要补充缩进层级。
修正后的核心代码示例
# 正确访问二维列表元素
print(grid[3][3])

grid_size = 4
count = 0
size = 60

# 遍历范围调整为0~3
for i in range(grid_size):
    print(i)
    for j in range(grid_size):
        print(j)
        count += 1
        # 正确索引写法
        print(grid[i][j])
        # 正确赋值写法
        grid[i][j] = gridTile(size,size,i*(size +10),j*(size + 10),"black",count)

def end():
    sqry = random.randint(0,3)
    sqrx = random.randint(0,3)
    # 正确索引写法
    grid[sqry][sqrx].colour = "white"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:15:03