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

Python中连续方括号的用法困惑——以四子棋代码为例

关于二维数组连续方括号的解释与代码修正

连续方括号board[row][col]的作用

你代码里的board是6行7列的二维数组(用numpy创建),连续方括号是用来精准定位数组里的单个元素:

  • 第一个方括号board[row]:取出数组中第row行的所有元素(这是一个一维数组)
  • 第二个方括号[col]:从这一行的元素里,提取出第col列的那个单独元素

举个实际例子:

  • board[0][0]对应棋盘左上角的格子
  • board[5][6]对应棋盘右下角的格子
  • 代码里board[row][col] == piece,就是判断这个位置的元素是否等于piece(1或2,代表玩家1或2的棋子)

你代码里的关键错误

注意drop_piece函数里的写法:

def drop_piece(board, row, col, piece):
    board[row][col] == piece  # 这里是比较运算符,不是赋值!

这里必须用赋值运算符=,改成:

def drop_piece(board, row, col, piece):
    board[row][col] = piece

否则调用这个函数时,棋子根本不会被放到棋盘上。

如何测试连续方括号的功能

不用纠结函数,先从基础数组操作入手测试,再结合函数验证:

1. 基础索引测试

直接在代码里加几行测试代码:

board = create_board()
# 打印初始状态的某个格子
print("初始board[0][0]的值:", board[0][0])
# 给这个格子赋值
board[0][0] = 1
# 再次打印,查看值是否变化
print("赋值后board[0][0]的值:", board[0][0])

运行后能看到值从0变成1,直观理解索引的作用。

2. 测试drop_piece函数

调用函数后打印棋盘,验证是否正确落子:

board = create_board()
drop_piece(board, 2, 3, 1)  # 在第2行第3列放置玩家1的棋子
print(board)

查看输出的棋盘,第2行(索引从0开始)第3列的位置应该显示为1,而非初始的0。

3. 测试is_valid_location函数

先填满某一列的底部,再验证函数返回值:

board = create_board()
board[5][2] = 1  # 给第2列的底部行放棋子
print("第2列是否可落子:", is_valid_location(board, 2))  # 应返回False
board[5][3] = 0  # 第3列底部为空
print("第3列是否可落子:", is_valid_location(board, 3))  # 应返回True

4. 测试get_next_open_row函数

给某几行的同一列放棋子,看函数能否找到下一个空行:

board = create_board()
board[0][1] = 1
board[1][1] = 1
print("第1列的下一个空行:", get_next_open_row(board, 1))  # 应返回2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 00:23:09