字符田字格绘制

一、实验目的

  1. 掌握 Python 的print()输出方法,理解空格和换行对字符图形的影响。
  2. 掌握字符串拼接与重复运算,实现边框和格内空白的构造。
  3. 理解嵌套循环的执行过程,使用函数完成可调整大小的网格绘制。

二、实验环境

本次验证环境为 macOS,Python 3.12.14。

三、实验内容与原理

使用+表示边框交点,使用-表示横线,使用|表示竖线,使用空格填充单元格内部。基本图形由两行、两列单元格组成,形成“田”字结构;扩展示例绘制四行、四列网格。

函数参数rows、cols分别表示单元格的行数和列数,width表示每个单元格内部的字符宽度,height表示每个单元格内部的文本行数。这里的宽高均为字符单位,不是像素或实际物理长度。

横向边框的构造公式为:

("+" + "-" * width) * cols + "+"

格内一行的构造公式为:

("|" + " " * width) * cols + "|"

外层循环控制单元格行数,每轮先输出一条横向边框,再由内层循环输出指定数量的格内文本行。循环结束后补上最后一条底边,避免遗漏底部边框。

四、实验步骤

  1. 定义绘图函数,并检查行数、列数、格宽和格高是否为正整数。
  2. 根据格宽和列数构造横向边框与格内文本行。
  3. 使用嵌套循环逐行输出图形,最后输出底边。
  4. 调用默认参数,绘制两行两列的字符田字格。
  5. 修改参数,绘制四行四列网格,检查函数能否复用。

将同目录中的字符田字格.py保存后,在终端运行:

python3 字符田字格.py

五、主要代码

以下为完整可运行代码,代码中未添加注释。

defdraw_grid(rows=2,cols=2,width=5,height=3):values=(rows,cols,width,height)ifany(type(value)isnotintorvalue<=0forvalueinvalues):raiseValueError("行数、列数、格宽和格高必须为正整数")border=("+"+"-"*width)*cols+"+"content=("|"+" "*width)*cols+"|"for_inrange(rows):print(border)for_inrange(height):print(content)print(border)if__name__=="__main__":print("示例一:2 × 2 字符田字格")draw_grid()print()print("示例二:4 × 4 扩展网格")draw_grid(4,4,5,2)

六、实验结果

程序已实际运行成功,正常退出。下图根据程序实际标准输出排版生成,展示两组运行结果。

图 1:左侧为两行两列的田字格,右侧为四行四列的扩展网格。

基本田字格的实际输出如下:

示例一:2 × 2 字符田字格 +-----+-----+ | | | | | | | | | +-----+-----+ | | | | | | | | | +-----+-----+

七、结果分析

默认参数为rows=2、cols=2、width=5、height=3。因此,图形共有三条横向边框,每个单元格内部有三行空白,总文本行数为2 × (3 + 1) + 1 = 9,每行字符数为2 × (5 + 1) + 1 = 13,均不包含示例标题。

扩展示例将参数设置为4, 4, 5, 2,生成四行四列网格。图形总文本行数为4 × (2 + 1) + 1 = 13,每行字符数为4 × (5 + 1) + 1 = 25。从实际输出可以看到,边框完整,交点和竖线对齐,说明函数能够根据参数正确调整网格规模。

绘制时需注意:横向边框和格内文本行都要补上最右侧字符,外层循环结束后要补上底边。由于终端字符通常高于其宽度,字符数量相同不代表显示长度相同,可通过调整width和height改善单元格的视觉比例。

八、实验总结

本实验利用字符串重复、字符串拼接和嵌套循环,完成了字符田字格及扩展网格的绘制。将重复输出过程封装为函数后,只需修改参数即可改变网格大小。实验说明,规则字符图形可以分解为少量重复行,再通过循环组合得到,从而减少重复代码并提高可读性。

相关新闻

Windows内网提权完全指南:配置错误、漏洞路径与加固实战

Windows内网提权完全指南:配置错误、漏洞路径与加固实战

1. 为什么安全评估绕不开Windows内网提权做了这么多年Windows环境的安全评估和加固&#xff0c;我越来越觉得提权这块知识是所有系统管理员和运维同学绕不过去的坎。很多人觉得“提权”就是攻击者的专属话题&#xff0c;实际恰恰相反&#xff0c;一个不清楚内网中有哪些提权路径…

2026/10/20 5:38:13 阅读更多 →
Agent记忆系统完全指南:从架构拆解到工程实战

Agent记忆系统完全指南:从架构拆解到工程实战

做智能体&#xff08;Agent&#xff09;的项目时间越长&#xff0c;我越觉得“记忆系统”是最容易被低估、却又最能拉开体验差距的一块。大家平时聊天都喜欢盯着模型参数、工具调用、提示词模板&#xff0c;真正让一个 Agent 从“答非所问”变得“像个靠谱的同事”的&#xff0…

2026/10/20 5:37:12 阅读更多 →
用Python+Markdown+JSON自动生成PPTX,告别机械排版

用Python+Markdown+JSON自动生成PPTX,告别机械排版

每次接到PPT任务&#xff0c;我下意识做的第一件事不是打开幻灯片软件&#xff0c;而是先想怎么用最少的时间做出一套能看的片子。别误会&#xff0c;这不是偷懒&#xff0c;是因为大多数商务汇报、课程分享、项目总结&#xff0c;结构上真的高度重复&#xff1a;封面、目录、章…

2026/10/20 5:37:12 阅读更多 →

最新新闻

HTTP POST表单提交全解析:Content-Type、编码格式与实战避坑指南

HTTP POST表单提交全解析:Content-Type、编码格式与实战避坑指南

1. 从一个被忽略的细节说起&#xff1a;为什么表单提交远不止填个action很多人第一次接触Web开发&#xff0c;接触到的第一个"能跑起来"的功能&#xff0c;大概率就是一个HTML表单。写一个<form>标签&#xff0c;配上action和method"post"&#xff0…

2026/10/20 6:25:32 阅读更多 →
自动驾驶多模态数据生成:统一传感器输出的关键技术与实践

自动驾驶多模态数据生成:统一传感器输出的关键技术与实践

自动驾驶算法做到后面&#xff0c;真正卡脖子的往往不是模型结构&#xff0c;而是数据。尤其当你同时要喂摄像头、激光雷达、毫米波雷达这几个完全不同的传感器时&#xff0c;数据稀缺和模态不一致会被放大成一个系统工程问题。OmniGen 这个名字听起来很高端&#xff0c;去掉包…

2026/10/20 6:25:32 阅读更多 →
三层网络架构冗余配置实战:VRRP、浮动路由与链路聚合详解

三层网络架构冗余配置实战:VRRP、浮动路由与链路聚合详解

前阵子搭了一套三层结构的网络实验环境&#xff0c;核心两台、汇聚两台、接入一台&#xff0c;实验目标很明确&#xff1a;把三层架构里的各路冗余手段都配上&#xff0c;然后人为制造故障&#xff0c;看流量到底能不能自己绕过去。做完最大的感受是——冗余两个字说起来容易&a…

2026/10/20 6:25:32 阅读更多 →
最新论文追踪指南:平台选择、检索技巧与自动订阅全攻略

最新论文追踪指南:平台选择、检索技巧与自动订阅全攻略

想第一时间看到领域里刚出炉的论文&#xff0c;最怕的不是搜不到&#xff0c;而是根本不知道该去哪个平台搜、用什么关键词、按什么排序。组会汇报前临时抱佛脚、开题时需要确认自己做的方向有没有人抢先发表、审稿时想查一查某篇预印本到底有没有正式见刊——这些场景我都经历…

2026/10/20 6:25:32 阅读更多 →
Web服务器Nginx与集群架构——Java开源litemall小商城项目应用实践

Web服务器Nginx与集群架构——Java开源litemall小商城项目应用实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 6:25:32 阅读更多 →
AI大模型自动化测试实战:全流程智能测试设计与落地

AI大模型自动化测试实战:全流程智能测试设计与落地

我在一线做测试自动化和质量保障已经快十年&#xff0c;说实话&#xff0c;前八年大部分时间都花在写脚本、调框架、跟环境和用例维护作斗争上。最近这两年&#xff0c;AI大模型自动化这个方向确实改变了我的工作节奏。之前接手某个跨平台系统&#xff0c;每个版本回归要花上两…

2026/10/20 6:24:32 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →