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

AI Python代码报错:TypeError: 'int' object has no attribute '__getitem__'

解决棋盘检查时的TypeError: 'int' object has no attribute 'getitem'

嘿,这个错误我做棋盘类项目的时候踩过坑,咱们先把问题拆明白:这个报错的核心是——你尝试对一个整数进行索引操作(比如写了something[0]),但整数根本没有__getitem__这个方法(也就是不支持索引)。放到你的场景里,就是你本来想访问二维棋盘的某个格子,但实际上你拿到的是一个单个的0(整数),还想继续用[j]去索引它,自然就炸了。

下面是几个最常见的原因和对应的修复办法:

1. 棋盘初始化错成了一维列表

很多人一开始会写成:

n = 5
board = [0] * n  # 这是一维列表,每个元素是整数0

当你想访问board[i][j]时,board[i]是整数0,再加上[j]就会触发这个错误。

正确的n×n零矩阵初始化应该是:

board = [[0 for _ in range(n)] for _ in range(n)]

这样每个board[i]都是一个包含n个0的子列表,你再用board[i][j]就能正确访问到第i行第j列的格子了。

2. 不小心把整行覆盖成了整数

比如你本来想给某个格子赋值,结果写成了:

board[i] = 0  # 把第i行整个变成了整数0

之后再访问board[i][j]时,board[i]已经是0了,自然无法索引。

修复方法是确保你赋值的是具体的格子:

board[i][j] = 1  # 给第i行第j列的格子赋值

3. 索引逻辑出错

比如你可能在循环里误写了索引顺序,或者把某个临时变量当成了二维结构。举个例子,如果你写了board[i,j](Python里这是元组索引),而你的棋盘是普通的二维列表,也可能会触发类似错误(或者直接报KeyError)。

快速排查步骤

  • 先打印你的棋盘:print(board),看看输出是不是[[0,0,...], [0,0,...], ...]这种二维结构,而不是[0,0,...]一维列表,或者混有整数的奇怪结构。
  • 找到报错的那一行代码,先单独打印board[i](假设你写的是board[i][j]),看看它是不是列表,还是整数。
  • 检查所有修改棋盘的代码,有没有不小心把整行/整列改成了单个整数。

示例正确代码

n = 4
# 正确初始化4×4棋盘
board = [[0 for _ in range(n)] for _ in range(n)]

# 检查指定坐标是否为空(值为0)
def is_cell_empty(board, row, col):
    # 先做索引合法性检查,避免越界报错
    if 0 <= row < n and 0 <= col < n:
        return board[row][col] == 0
    raise IndexError("坐标超出棋盘范围")

# 测试
print(is_cell_empty(board, 2, 3))  # 输出True
board[2][3] = "X"
print(is_cell_empty(board, 2, 3))  # 输出False

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:36:21