Python传递原始参数遇语法错误及numpy数组赋值问题求助
问题修复方案
现有代码存在的错误
- 语法错误:if 语句括号不匹配,原代码
if array[y, _list[0] != 0:缺少右括号,且索引取值逻辑错误 - 列名字符串未转索引:你定义了A~G的变量,但split得到的
_list[0]是字符串格式的"A"/"B"等,无法直接匹配到变量值,需要手动做字母到数组索引的映射,且numpy数组索引从0开始,原来的A对应1的配置会导致索引越界 - 行索引越界:初始化的数组是6行,行索引范围是0~5,原代码写的
range(6, -1, -1)会取到不存在的第6行,触发索引错误 - 字符串无法直接存入数值数组:默认初始化的np.zeros是浮点类型,不能直接存储"Red"/"Yellow"字符串,需要把颜色也映射为数值存储
修复后可运行代码
import numpy as np def who_is_winner(pieces_position_list): # 初始化6行7列的数组:0代表空位,1代表Red,2代表Yellow array = np.zeros((6,7), dtype=int) # 列名字母映射到数组索引 col_map = {"A":0, "B":1, "C":2, "D":3, "E":4, "F":5, "G":6} # 颜色字符串映射为数值 color_map = {"Red":1, "Yellow":2} for piece in pieces_position_list: col_str, color_str = piece.split("_") col_idx = col_map[col_str] color_val = color_map[color_str] # 从最底部行开始向上找第一个空位 for row_idx in range(5, -1, -1): if array[row_idx, col_idx] == 0: array[row_idx, col_idx] = color_val break # 这里可继续添加判断四子连线的逻辑 print("当前棋盘状态:\n", array) who_is_winner(["A_Red", "B_Yellow", "A_Red", "B_Yellow", "A_Red", "B_Yellow", "G_Red", "B_Yellow"])
运行说明
运行上述代码会打印出落子完成后的棋盘状态,你可以在此基础上继续添加判断输赢的逻辑。
内容的提问来源于stack exchange,提问作者Chinese Billi
相关产品推荐
相关产品推荐

