编程作业怎么做?从需求拆解到调试排错的完整指南
1. 第一次作业别急着写代码先搞懂这几件事第一次拿到编程类作业大多数人第一反应是打开编辑器直接开写。我见过太多同学栽在这一步——需求还没看明白就动手跑不通就反复改最后在调试上浪费的时间比写代码本身还多。这篇就结合我这些年的实际经验聊聊第一次作业到底应该怎么做从拆需求到调试排错把每一步背后“为什么这么做”也讲清楚。不管你是刚上大一的学生还是自学编程准备转行的朋友这篇内容都适配。它不局限于某一种语言或某一门课程而是把“完成一次编程作业”这件事拆成一套可复用的流程。这套流程你这次用了以后做课程设计、做毕业设计、甚至在工作中接需求都能用得上。2. 拿到题目之后先别急着写代码2.1 拆解需求比写代码更重要很多第一次作业写不好的根子不是代码能力不行而是需求根本没读透。作业题里每一个字都有用尤其是这几个关键信息输入是什么、输出是什么、数据处理规则有什么限制、边界情况怎么处理。我在带模拟项目X的时候某同学拿到一道“统计学生成绩等级”的题目题目要求写得很清楚“输入0到100之间的分数输出对应的等级90分以上为A80到89为B以此类推不及格为F”。结果他第一次写的时候根本没处理输入合法性用户输入了一个“-5”程序照样运行还输出了一个“F”。这就是典型的只看了大规则没看边界条件。正确做法是把题目重新用笔整理一遍变成自己能看懂的需求清单输入一个数字范围0~100输出一个字母A/B/C/D/F规则分数区间边界如何划分是否含等号异常输入超范围或非数字时程序怎么处理加分项是否需要重复查询、是否要求多组输入这一步做完你的作业基本就成功了一半。把需求写清楚的过程就是把模糊想法变成明确约束的过程。很多老师出的作业分数评判中需求理解是否到位是隐性的关键评分点——你代码写得再花哨需求跑偏了一样不讨好。2.2 画出解题思路图哪怕只是草稿拆完需求之后不要急着写码。哪怕是“第一次作业”这种看起来很简单的题目我也建议你在纸上或脑子里过一遍流程。这里不是说要你画规范的流程图而是把“程序怎么一步步走”想清楚。比如刚才那个成绩统计的题思路是这样的接收用户输入检查输入是否合法是否为数字、是否在0到100之间按区间规则判断等级输出结果走到第4步你还要想一想要不要循环要不要让用户多查几次这种问题其实就对应了题目里的“是否要求多组输入”这类隐藏需求。我个人的经验是用不超过五分钟把这个顺序写在草稿纸上然后对着草稿再读一遍原题确认每一步都对得上。这一步的习惯养成了后面做复杂项目时你就能够先搭骨架再填肉而不是想到哪写到哪。某跨平台系统在做初期规划时的思路本质上和这个一脉相承——先有全局再抠细节。3. 环境和工具提前配好省下两天时间3.1 开发环境搭建的常见坑第一次写作业最让人崩溃的不是题难而是环境起不来。比如你安装了一个工具链折腾一下午还报错第二天发现不过是缺少某个系统组件那种感觉我太熟悉了。先说说语言和编译/解释环境的选择。如果你所在课程指定了语言环境那没得选老老实实装官方推荐的版本即可。如果课程没限定我的建议是选一个“怎么折腾都不容易坏”的组合解释型语言如Python对新手最友好报错相对直观出问题也好排查编译型语言如C/C、Java严格一些但能帮你更快理解底层机制不管选哪个装环境时记住一个原则到官网下载不要随便在搜索引擎里点第三方打包版。不是我危言耸听网上很多“一键安装包”会顺带装上一堆用不到的东西机器变慢都算小事有的还会悄悄改系统设置。某同学之前贪方便装了某个打包好的环境结果系统自带的包管理器被覆盖了搞了好几天才干净。环境装好之后一定要做一次“最小验证”写个输出“Hello World”之类的程序跑通。这一步看着简单却能一次性验证编辑器、编译器/解释器、运行环境、系统路径四层是否都正常后面作业出问题时排查范围就小很多。3.2 编辑器选型能跑通代码的工具就是好工具编辑器层面初学阶段真的不用太纠结。有人喜欢IDE一打开就能跑界面功能齐全有人喜欢轻量编辑器配命令行觉得更专注。我的态度是第一次作业怎么顺手怎么来。比较推荐的一条路径是“轻量编辑器 终端命令行”。理由有三点不容易被IDE的各种配置项带偏比如某些IDE新建项目时让你选一堆模板新手看到就头大命令行编译/运行能让你更清楚“代码是怎么变成程序的”这是IDE一键运行背后隐藏的细节以后部署到远程环境、用命令行做批量处理这些能力都是通用的当然如果你已经上手了某个IDE那就用着不用特意换。工具没有绝对好坏用得顺就是好。我见过有同学硬从学了一半的IDE换到命令行结果光记命令快捷键就折腾了一星期完全没有必要。第一次作业这块时间应该花在理解题目和打磨代码上而不是跟工具较劲。写代码的时候建议一开始就打开“显示行号”和“空格符可见”这两个功能。显示行号方便你根据报错信息定位问题看得到空格和Tab可以避免很多“看起来一样但程序就是不认”的尴尬局面。这也是我在实际中看到很多新手反复踩的坑——字符一样、编码一样、肉眼看着一样结果程序报错一看是Tab把缩进搞乱了。4. 动手写代码边写边想别复制粘贴交差了事4.1 结构化写法从“能跑”到“好读”第一版代码的目标只有一个能跑通最核心的那条流程。不用一开始就追求多组输入、异常处理、代码优化先把主干跑通再往上加东西。以“输入成绩输出等级”为例第一版写出来大概是这样的score int(input(请输入成绩: )) if score 90: grade A elif score 80: grade B elif score 70: grade C elif score 60: grade D else: grade F print(等级:, grade)这是一个能跑通的版本但还远远不够“好读”。什么叫好读就是别人包括未来的你自己看这段代码时不用看注释就能知道这段逻辑在干什么。一个很关键的改动是把“输入”“处理”“输出”三块分开。作业可能只有十几行代码不分开也能看懂但当代码一多混在一起就是灾难了。下面这个结构就好很多def get_input(): return int(input(请输入成绩: )) def judge_grade(score): if score 90: return A elif score 80: return B elif score 70: return C elif score 60: return D else: return F def main(): score get_input() grade judge_grade(score) print(等级:, grade) main()把函数拆出来看起来代码变长了但逻辑清晰了。函数名本身就是注释——get_input 说明这函数负责拿输入judge_grade 说明这函数负责判等级。后面你要加“输入校验”功能直接在 get_input 那一块加即可不用动 judge_grade 的代码。这就是模块化的好处。有些朋友可能觉得“作业只有这么点没必要用函数”。但从一开始养成拆函数的习惯成本极低、收益却很大。很多公司笔试看得不是代码能不能跑而是你能不能写出结构清晰、便于扩展和维护的代码。第一次作业正是练习这个能力的最佳时机。4.2 边界条件和异常处理老师没明说但一定会看很多第一次作业写挂了不是因为主流程有问题而是边界条件处理得不到位。什么是边界条件输入正好是90分算A还是B这取决于题目说的“90分以上”是否包含90输入是-1或101程序应该怎么办输入是“abc”int() 会抛异常还是转成数字这些问题题目未必会逐一说明但这就是“读题要细”的体现。如果题目里写了“0到100的整数”那你就应该写代码保证这一点——用户不输入0到100的人怎么办加一个简单的输入校验def get_input(): while True: try: score int(input(请输入成绩: )) if 0 score 100: return score else: print(成绩必须在0到100之间请重新输入。) except ValueError: print(请输入数字。)这段代码做了一件事不合法就重新输入直到合法为止。循环加上 try/except恰好覆盖了“非数字”和“超范围”两种常见情况而且用户体验上是“让它再来一遍”而不是直接崩溃退出。这里我还想补充一个观点异常处理不只是在作业里“讨好老师”的装饰品。真实项目里用户输入永远是不可控的系统能做的只有兜底。某跨平台系统上线初期就因为一个用户输入了超长字符串没做限制导致后续流程全部阻塞后来花了两天才把数据清洗干净。所以从一开始就养成“默认用户会乱输入”的意识对你以后帮了大忙。5. 运行、调试与排查错误信息是最好用的老师5.1 报错信息到底怎么读第一次写程序遇到报错是家常便饭。我看到很多新手一看到红色英文错误信息就慌了直接复制粘贴到搜索引擎或者干脆问别人。其实大部分报错信息都告诉你问题在哪了。拿Python来说最常见的报错无非这么几类报错类型是什么意思典型的出错场景SyntaxError语法错误解释器读不懂你的代码括号没闭合、少了冒号、字符串引号不配对TypeError类型错误对不匹配的类型做了操作字符串和整数直接相加ValueError值错误值本身不合法int(abc) 尝试把非数字字符串转成整数IndexError索引越界访问了不存在的元素位置列表只有3个元素你取了第5个NameError名称错误变量名不存在拼写错了变量名或者忘记初始化5.2 定位错误位置三分钟定位法拿到报错信息最该看两处错误类型和出错的文件行号。很多解释器报错都会把出错位置标出来比如 “line 12”。这一行就是你的主战场。我自己的调试策略是“三分定位法”读错误类型判断是语法层面还是运行层面的问题定位到报错行先只看这一行找明显问题如果这一行看起来没问题把上下文也读一遍——很多时候是上一行的变量名拼写错了但报错发生在下一行比如这段代码score int(input(请输入成绩: )) if score 90: grade A elif score 80: grade B else: grade C print(等级为, gratE)如果上面代码运行会报 NameError因为最后一行把 grade 拼成了 gratE。报错信息里写的是“line 8”如果你只看第8行看起来没错啊——但其实是前面几行定义了 grade 这个变量名到了第8行却用了一个不同的名字。所以定位的时候要把相关行都扫一遍。5.3 用 print 大法“观察”程序的内部状态在没有专业调试工具的情况下print 大法永远是最快的调试手段。思路就是在关键位置打印变量的当前值看哪一步开始变得不符合预期。比如刚才那个判等级的题如果输出不对你可以临时加几行print(DEBUG: score , score) if score 90: grade A print(DEBUG: 进入 A 分支)运行一遍看到底有没有进入这个分支进入时 score 的值是多少。这样你就能知道是“输入值本身不对”还是“判断条件写错了”。排查完记得把这些临时 print 删掉不然交上去会显得很不专业。除了输出值还有一个不起眼但很实用的技巧把代码“卡在半路”用顺序思维跑一遍。所谓“人肉单步执行”就是拿一张草稿纸逐行写下每个变量在每一行的值模拟程序运行。代码短的时候这个方法异常有效代码长了就缩小范围做局部人肉模拟。写作业阶段大部分代码不超过50行这个方法完全够用。6. 提交之前的最后一步自查清单一定要过一遍6.1 从用户视角再跑一遍代码写完、能跑通这只是及格线。提交之前强烈建议你把自己当成用户重新跑几遍正常输入一个中间值比如80看看输出是不是B输入边界值比如90、60、0、100输入非法值比如-1、101、abc连续跑多组数据确认不受上一次输入的干扰这几组测试跑完你基本就能判断代码是否稳健了。“刚好跑通一次”和“怎么输入都不出错”是完全两种完成度。老师批改作业时打的分数差异往往就体现在这里。6.2 代码格式和注释一票邀请券再说说代码的风格。不同语言的风格要求不一样但有几条是通用的统一缩进不要混用Tab和空格变量名语义化比如用 score 而不是 s用 grade 而不是 g适当加注释解释“为什么这么做”而不是解释“这行做什么”打个比方注释解释“做了什么”代码本身就能体现但“为什么要判断 score 是否介于0到100之间”这种背景信息不加注释的话别人很可能看不懂。所以注释要写“为什么”而不是无脑翻译代码。# 成绩需要在0到100之间超范围的一律重新输入 if 0 score 100: ...这种注释就有价值。另一个容易忽略的细节是交作业前把文件名改好。很多老师要求“学号_姓名_作业名.py”这种命名方式这看似小事但能直观反映你对规则的态度。别问我怎么知道的——我见过太多因为“压错了文件名”被打回重交的案例了。6.3 学会“讲代码”的软技能如果你这门课的作业需要“答辩”或“演示”那我建议你练习一下“讲代码”的软技能。不要求你像讲师一样口若悬河但至少要做到三点能说清楚整体思路先做了什么再做了什么遇到提问能迅速定位到对应代码位置不确定的地方坦诚说“这部分我没太想清楚”而不是胡编现实中很多第一次作业是以“上机验收”的方式交的。老师旁边一站屏一投开始问你“你这个守卫语句是干嘛的”全场安静……有过这种经验的同学应该懂我在说什么。讲代码时先讲函数怎么组织的再讲关键逻辑为什么这么写最后留出空间让老师提问。把代码讲清楚往往能挽回不少印象分。7. 我踩过的坑你就不用再踩了7.1 “明明照着书敲的怎么就报错”这是第一次作业里最经典的“灵异事件”。遇到这种情况第一反应不要怀疑人生而是依次排查中英文符号混用中文标点比如中文括号“”在代码里会被当成非法字符肉眼看起来却差不多少了一个字符比如把“”打成了“”前者是比较后者是赋值逻辑完全变了环境版本不一致书上用的版本和你本地不一样部分语法有差异我最常提醒别人的就是中文符号问题。不少代码编辑器默认是英文输入状态但如果你切换了输入法冒号、分号、括号都可能悄悄变成全角。这种问题报错时往往会导向一个让人摸不着头脑的SyntaxError实际原因不过是标点的编码不对。排查方法是在编辑器里开启“显示空格和制表符”功能或者把代码片段复制到一个可以高亮显示空格的在线工具里一眼就能看出哪个符号不对劲。7.2 不是所有“错误”都是错有时候运行结果跟你预期不一样不是代码有问题而是你预期错了。比如成绩判断题里90本来就是A你看成B了又比如分数等于边界时你大脑自动认为“应该算高一档”但题目的规则根本没这么写。所以遇到“结果不对”先回看题目再回看代码别上来就改。我遇到过不止一个同学反复改了好几版最后一核对原题发现是自己把“80到90为B”记成“80以上为B”了。7.3 多备份永远不要只留一份最后说一个几乎所有新手都会忽略的事代码多备份。这里的备份不是指git那一套复杂版本控制——第一次作业规模用不上。但要养成“写完一个可用版本就另存一份”的习惯。比如你可以把文件按版本名存下来作业_v1.py、作业_v2.py。这样当你把代码改坏时还能退回上一个可用版本。多留一手多一分从容。如果后续你愿意多走一步学一下git的基本用法也不会亏尤其在课程设计这类需要长时间维护的项目里git能帮你记录每一次改动谁改的、改了什么都一清二楚。第一次作业不强制用但越早接触越好。8. 第一次作业做完我建议你再做三件事8.1 重构一次“能跑”和“好维护”中间隔着一整个重构的成本。作业交付之后如果你还有余力不要急着把文件一关试着从下面几个角度重新审视一遍自己的代码有没有可以抽出来的重复逻辑变量命名能不能更准确表达含义函数能不能拆得再细一点异常处理覆盖得全不全把这段代码改成你心目中“更好的样子”并不需要花太长时间但积累下来的设计直觉会直接带进下一次作业。8.2 写一份简单的“操作记录”记录一下你这次作业做了哪几步、在哪一步卡得最久、是怎么解决的。不用写多正式两三行都可以。这其实是给自己留一份排错档案下次遇到类似问题翻一下记录可能比再折腾半小时更有效。某同学就是靠着这样一份随手写的记录在期末大作业时翻到自己之前遇到的编码问题解决方案少走了很多弯路。你以为自己会记得实际上隔一个月再回头看回忆起来完全是另一回事。8.3 和你自己的代码“告别”这句话不是矫情。第一次作业的核心价值不是那几十行代码而是你完成它的整个过程中的选择和取舍。代码提交之后它就像你学习轨迹上的一个标记点。回头看时你会看到自己从“拿到题满脸问号”到“能理解需求、设计流程、调试排错、加异常处理”全过程的变化。说句实在的我第一次写作业时也写得一团糟但没有那次的糟糕就没有后来对代码结构的敏感。不用追求一次完美重要的是迈出这一轮看到问题下次改掉。这也是为什么我发自内心觉得“第一次作业”并不仅仅是一份作业——它是你和技术世界的第一次正式对话值得认真对待。

相关新闻

88E6321交换机参考设计实战:从原理图到量产的关键设计要点

88E6321交换机参考设计实战:从原理图到量产的关键设计要点

简介:这份资源是Marvell CoverLink Street 88E6321交换机的官方参考设计资料,面向从事千兆以太网交换机硬件设计、嵌入式网络开发及音视频传输系统集成的工程师。88E6321为7端口千兆AVB交换机,集成2个PHY并支持Energy Efficient Ethernet节能…

2026/10/17 5:35:27 阅读更多 →
金融服务业轻量级实时风控API架构设计

金融服务业轻量级实时风控API架构设计

我无法基于当前输入生成符合要求的博文。原因如下:输入中仅提供了项目标题"financial-services",未提供任何实质性的项目正文、关键词列表或摘要描述;所谓“相关热搜词”和“最新网络热词”部分为空,未给出具体词汇&…

2026/10/17 5:35:27 阅读更多 →
安桥NR906设置全解析:从HDMI分配到Audyssey校准的实战指南

安桥NR906设置全解析:从HDMI分配到Audyssey校准的实战指南

简介:安桥NR906 AV功放说明书资源包,专为功放用户和家庭影院玩家准备,帮助快速上手调试这款高端机型。压缩包内共含2个文件,以PDF完整手册为主体,辅以HTML索引说明,总大小6.78MB。PDF手册涵盖初始设置、MCA…

2026/10/17 5:35:27 阅读更多 →

最新新闻

企业级多模态RAG知识库搭建实战:从0到1全流程复盘

企业级多模态RAG知识库搭建实战:从0到1全流程复盘

做企业级 RAG 知识库这件事,我一开始是真没当回事。直到接了一个装修公司项目,才发现自己太天真。这个项目不是网上那种“拿十几个PDF跑个问答Demo”的玩具,而是要把这家装修公司过去十几年积攒的图纸、合同、报价单、工地照片、客户聊天记录…

2026/10/17 8:21:20 阅读更多 →
AI品牌力建设指南:从种草提效到心智占领的系统路径

AI品牌力建设指南:从种草提效到心智占领的系统路径

想清楚一个问题:很多品牌都在讲“用AI做内容”,但真正把AI做成一套可复用的品牌增长系统的,并不多。我做营销技术咨询这几年,接触过不少品牌方的市场负责人,大家普遍的状态是——买了AI会员、尝试过生成热点文案、用数…

2026/10/17 8:21:20 阅读更多 →
Agentic RAG实践:查询路由与Web兜底设计,解决RAG上线三大坑

Agentic RAG实践:查询路由与Web兜底设计,解决RAG上线三大坑

如果你的RAG系统上线之后,用户问一句"你好",向量检索也能认认真真去知识库里找有没有"你好"的答案,那说明你正处在大多数RAG项目从Demo走向生产的第一道坎上。我之前给某公司的客服知识库做过一套问答系统,初…

2026/10/17 8:21:20 阅读更多 →
vLLM高并发推理引擎:PagedAttention与连续批处理实战指南

vLLM高并发推理引擎:PagedAttention与连续批处理实战指南

每当看到群里有人问“为什么我本地起的LLM服务一遇到并发就报错”,我就知道对方多半还没有接触过vLLM这类高吞吐推理引擎。单个请求跑起来很顺畅,模型回答质量也没问题,但只要并发一上来,显存占用就像被倒进了无底洞,速…

2026/10/17 8:21:20 阅读更多 →
GEO实战:让DeepSeek、Kimi等国产大模型主动引用你的内容

GEO实战:让DeepSeek、Kimi等国产大模型主动引用你的内容

1. 先别急着问“怎么做”,得先搞懂AI凭什么推荐你的内容1.1 为什么传统的SEO经验突然失灵了这几年做内容运营的朋友应该有一个共同的感受:在搜索框上那一套“霸屏”打法,放到AI问答里全都不太对劲。我以前给某个知识类站点做优化的时候&#…

2026/10/17 8:21:20 阅读更多 →
ADS-B Python环境搭建:从RTL-SDR驱动到航班数据解码

ADS-B Python环境搭建:从RTL-SDR驱动到航班数据解码

简介:这是一套面向Python开发者与航空数据爱好者的基础ADS-B消息处理工具库,适用于需要解析、模拟或调试ADS-B(自动相关监视)原始报文的初学者与中级实践者。资源提供完整的开源Python软件包,支持快速安装与即用式调用…

2026/10/17 8:20:20 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →