Python控制台8×8棋盘黑白交替着色异常问题求助
修复8×8棋盘(3×3格子)的黑白交替着色问题
原代码的核心问题在于行颜色判断逻辑混乱和换行逻辑错误,导致棋盘黑白完全不符合交替规则。以下是问题拆解和修复方案:
问题点分析
- 行颜色判断逻辑错误:原代码用
linecount%3==0 or linecount%4==0 or linecount%5==0来决定颜色,完全偏离棋盘行的规律。正确逻辑应为:每3行对应棋盘的一个大格子行,同一大格子行的3行颜色模式一致,相邻大格子行的颜色模式交替。 - 换行位置错误:原代码用
len(chessboard)%25==0触发换行,而每行实际是24个方块(8个大格子×3),换行位置计算错误导致排版混乱。 - 列颜色切换未结合行状态:原代码仅在
i%3==0时切换颜色,但未关联当前大格子行的起始颜色,导致列交替逻辑混乱。
修复后的代码
print(""" Chess Press Enter to Start... """) enterwait = input() if enterwait == "": chessboard = "" # 遍历8个棋盘大格子行,每个行对应3个小行 for board_row in range(8): # 每个大格子行重复输出3次相同的小行 for _ in range(3): # 遍历8个棋盘大格子列,每个列对应3个同色小方块 for board_col in range(8): # 国际象棋棋盘颜色规则:行+列奇偶性相同为白色,否则黑色 if (board_row + board_col) % 2 == 0: chessboard += "⬜" * 3 else: chessboard += "⬛" * 3 # 每个小行结束后换行 chessboard += "\n" print(chessboard)
关键改动说明
- 按大格子行/列组织逻辑:先处理8个大格子行,每个行重复3次小行;再处理8个大格子列,每个列输出3个同色方块,逻辑更清晰。
- 简化颜色判断:用
(board_row + board_col) % 2 == 0直接判断大格子颜色,严格遵循国际象棋棋盘的黑白交替规则。 - 明确换行时机:每个小行(24个方块)结束后直接添加换行符,避免长度计算误差。
内容的提问来源于stack exchange,提问作者Aziz Allahverdiyev
相关产品推荐
相关产品推荐

