如何让嵌套for循环跳过二维数组首尾行 打印+号包围的N阶棋盘
问题根因
你出现该问题的核心原因是二维列表初始化时使用了浅拷贝写法,所有行指向同一个列表对象,修改任意一行的元素都会同步修改所有行的对应位置,哪怕你循环时只遍历了中间行,首尾行也会被同步改动。
常见的错误初始化写法如下:
# 错误写法:*生成的所有行是同一列表的引用 grid = [['+'] * (N+2)] * (N+2)
修复后的完整代码
# 读取用户输入的N值 N = int(input("请输入棋盘大小N:")) # 正确初始化:逐行生成独立列表,避免浅拷贝 grid = [['+'] * (N + 2) for _ in range(N + 2)] # 替换中间区域为空格 for i in range(1, N + 1): for j in range(1, N + 1): grid[i][j] = ' ' # 打印最终棋盘 for row in grid: print(''.join(row))
效果说明
- 当输入N=5时,输出为7行7列的边框,外围全是
+,内部5*5区域为空白,完全符合预期效果。
内容的提问来源于stack exchange,提问作者edt
相关产品推荐
相关产品推荐

