Python中如何为if条件动态添加参数以适配任意尺寸井字棋获胜判断
适配任意尺寸棋盘的行获胜判断方案
直接利用Python内置能力就可以实现完全动态的判断逻辑,不需要写死多条件串联的if语句,以下是可直接复用的方案:
优化后代码
# dim为棋盘尺寸,可动态设置为3/4/5等任意值 for row_start in range(0, len(grid), dim): # 自动提取当前行的所有元素,长度随dim动态变化 current_row = grid[row_start : row_start + dim] # 判断整行是否全为X,等价于N个and串联的判断条件 if all(cell == "X" for cell in current_row): print("Player X win") print("-------------") # 打印完整棋盘 for print_start in range(0, len(grid), dim): print(grid[print_start : print_start + dim]) print("-------------") # 匹配到获胜直接终止遍历,节省性能 break
方案说明
- 列表切片
grid[row_start : row_start + dim]会根据你设置的dim值自动提取对应长度的行元素,3x3棋盘取3个元素、5x5取5个,天然适配任意规格的棋盘 all()函数会迭代校验当前行所有元素是否都满足== "X"的条件,运行效率和手写多and判断完全一致,代码可维护性大幅提升- 原代码中冗余的
count、count1计数变量已经删除,直接用步长为dim的range遍历即可自动计算每行的起始坐标,逻辑更清晰
注意:你原有代码中的
count1 =+ dim是语法错误,等价于count1 = dim,会导致打印棋盘的逻辑出现死循环,优化后的代码已经修复了该问题。
内容的提问来源于stack exchange,提问作者Sazee
相关产品推荐
相关产品推荐

