Python开发终端游戏时双层循环打印棋盘前缀异常如何解决
错误原因
create_board中每次新增棋盘行就调用打印方法,此时10行棋盘还未完全生成,会触发多次无效打印print_board内循环逻辑错误:变量board_layout被循环反复覆盖,且仅在所有循环结束后打印一次,最终只能取到最后一个字母J的内容,且循环嵌套逻辑导致字母和棋盘行无法对应
修正后代码
board = [] board_size = 10 alphabet = "ABCDEFGHIJ" def create_board(): # 先把10行棋盘全部生成完成 for i in range(board_size): board.append(["."] * board_size) # 全部生成后再调用打印 print_board(board) def print_board(board): # 用下标匹配字母和对应棋盘行 for index, row in enumerate(board): current_letter = alphabet[index] print(f"{current_letter} {' '.join(row)}") def main(): create_board() main()
如果习惯用计数写法,也可以调整print_board为以下形式,逻辑完全一致:
def print_board(board): count = 0 while count < board_size: # 直接取count对应行+对应字母,不需要嵌套循环遍历整个board board_layout = alphabet[count] + " " + " ".join(board[count]) print(board_layout) count += 1
最终输出效果
A . . . . . . . . . . B . . . . . . . . . . C . . . . . . . . . . D . . . . . . . . . . E . . . . . . . . . . F . . . . . . . . . . G . . . . . . . . . . H . . . . . . . . . . I . . . . . . . . . . J . . . . . . . . . .
内容的提问来源于stack exchange,提问作者Basson Koch
相关产品推荐
相关产品推荐

