Python中如何修改矩阵元素,实现井字棋游戏的落位替换功能?
井字棋位置替换实现方案
问题原因
你当前的代码操作的是二维列表的行维度:pop(1)会直接删除索引为1的整行(也就是存储["4","5","6"]的第二行),再插入单个字符x自然不能实现单个位置的数值修改。
实现方法
Python中二维列表的单个元素可以通过列表[行索引][列索引]直接定位赋值,索引从0开始计数:
- 顶部中间的字符"2"属于第1行(对应行索引
0)的第2个元素(对应列索引1),直接对该位置赋值即可完成修改。
基础实现代码
tic_tac_screen = [["1", "2", "3"], ["4", "5", "6"], ["7", "8", "9"]] # 直接定位到目标位置赋值 tic_tac_screen[0][1] = "x" print(tic_tac_screen)
运行后输出结果为:[['1', 'x', '3'], ['4', '5', '6'], ['7', '8', '9']]
通用封装方案
如果需要根据用户输入的1-9数字动态定位位置,可以封装为通用方法:
def update_tic_tac_board(board, input_pos, symbol): # input_pos为用户输入的1-9的位置编号,symbol为要写入的x/o pos = int(input_pos) row_index = (pos - 1) // 3 col_index = (pos - 1) % 3 board[row_index][col_index] = symbol return board # 调用示例:将位置2替换为x tic_tac_screen = [["1", "2", "3"], ["4", "5", "6"], ["7", "8", "9"]] tic_tac_screen = update_tic_tac_board(tic_tac_screen, 2, "x")
内容的提问来源于stack exchange,提问作者Mopps
相关产品推荐
相关产品推荐

