You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让嵌套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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 04:06:07