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

如何用Python仅通过for循环与函数实现2×n终端网格打印?

问题分析与解决

你的代码核心问题是每列单独打印了边框和竖线行,导致n>1时重复生成完整的行结构,而不是将多个单元格的边框/竖线拼接成一行。

错误原因拆解

在print_2byN_rows_columns函数中,你嵌套了for y in range(n)循环,每次循环都会打印一个完整的"+ - - - - +"和4行竖线,这相当于为每个列单独生成了一个1×1的网格,而不是把n个列拼接成一行。

修正方案

我们需要先构造完整的一行边框和完整的一行竖线,再按2个行块的结构重复输出:

  1. 边框行:由n个"+ - - - -"单元拼接,最后再加一个"+",形成+ - - - - + - - - - +(n=2时)
  2. 竖线行:由n个"| "单元拼接,最后再加一个"|",形成| | |(n=2时)
  3. 每个行块包含:1行边框 + 4行竖线
  4. 整个2×n网格包含:2个行块 + 最后一行边框

修正后的代码

def print_2byN(n):
    # 打印顶部/底部边框行
    def print_border():
        print("+" + " - - - - +" * n)
    
    # 打印一行竖线内容
    def print_line():
        print("|         " * n + "|")
    
    # 打印一个完整的行块(边框+4行竖线)
    def print_block():
        print_border()
        for _ in range(4):
            print_line()
    
    # 输出2个行块
    for _ in range(2):
        print_block()
    # 打印最后一行边框
    print_border()

# 主程序
print_2byN(int(input("Enter an integer for 2byN: ")))

验证结果

  • 当n=1时,输出符合预期:
+ - - - - +
|         |
|         |
|         |
|         |
+ - - - - +
|         |
|         |
|         |
|         |
+ - - - - +
  • 当n=2时,输出与预期一致:
+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +

内容的提问来源于stack exchange,提问作者nullzoid24

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 22:35:15