如何用Python仅通过for循环与函数实现2×n终端网格打印?
问题分析与解决
你的代码核心问题是每列单独打印了边框和竖线行,导致n>1时重复生成完整的行结构,而不是将多个单元格的边框/竖线拼接成一行。
错误原因拆解
在print_2byN_rows_columns函数中,你嵌套了for y in range(n)循环,每次循环都会打印一个完整的"+ - - - - +"和4行竖线,这相当于为每个列单独生成了一个1×1的网格,而不是把n个列拼接成一行。
修正方案
我们需要先构造完整的一行边框和完整的一行竖线,再按2个行块的结构重复输出:
- 边框行:由n个"+ - - - -"单元拼接,最后再加一个"+",形成
+ - - - - + - - - - +(n=2时) - 竖线行:由n个"| "单元拼接,最后再加一个"|",形成
| | |(n=2时) - 每个行块包含:1行边框 + 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
相关产品推荐
相关产品推荐

