一, 题目描述
题目来源:Python语言程序设计(第5章 程序练习题 5.1)
题目要求:
编写程序,用字符方式打印输出一个简单的田字格,输出效果如图(4x4网格)。要求采用函数方式,以田字格宽度为参数,能够根据参数绘制任意大小的田字格。
二,解题思路
观察图 5.16 的 4x4 田字格,我们可以发现它的基本规律:
整个网格由 +(交点)、-(横线)、|(竖线)和空格组成。
每一行小格子的结构都是对称的,例如横向是 ±–+,纵向是 | |。
题目要求以“宽度”为参数。在这里,“宽度”指的是小格子的行列数(也就是网格规模 N x N)。如果传入参数 n,则生成 n 行 n 列的小格子。
我们可以通过字符串乘法和循环来简化代码,避免重复写死固定的边框。
三,代码演示
defdraw_grid(n):""" 绘制 n x n 的田字格 :param n: 小格子的行数和列数 (图中为 4) """# 第一步:打印顶部边框 (例如: +---+---+---+---+)# 逻辑:循环 n 次,每次打印 "+---",最后补上一个 "+"print("+"+"---+"*n)# 第二步:循环打印每一行 (包含内部竖线和底部分隔线)foriinrange(n):# 2.1 打印每一行内部的竖线 (例如: | | | | |)print("|"+" |"*n)# 2.2 打印每一行底部的横线 (例如: +---+---+---+---+)# 注意:最后一行也需要打印横线,所以直接放在循环内print("+"+"---+"*n)# 主程序测试if__name__=='__main__':try:size=int(input("请输入田字格的大小(如输入4):"))ifsize>0:draw_grid(size)else:print("请输入大于0的整数!")exceptValueError:print("输入错误,请输入整数!")四,结果展示
五,代码原理解析(核心重点)
1.字符串乘法妙用:“—+” * n 是 Python 中非常实用的特性。如果 n=4,“—+” * 4 就会直接生成 “—±–±–±–+”,极大地简化了循环嵌套。
2.循环结构设计:顶部的边框在循环外打印一次。内部循环 for i in range(n) 每次不仅负责打印格子的内部空间(| |),还负责打印该行下方的边界线(±–+)。因为最后一行的小格子下方也需要边界线,所以底部的边界线和内部的边界线写法完全一致,直接放在循环末尾即可。
3.参数化设计:将 n 作为参数传入函数,极大地提高了代码的复用性。如果你输入 3,它就会自动生成 3x3 的网格;输入 5,就会生成 5x5 的网格。