任何程序本质上都是对数据的处理流程,而控制程序如何执行的关键,就是**顺序结构、选择结构和循环结构**

发布时间:2026/10/16 6:31:34

任何程序本质上都是对数据的处理流程,而控制程序如何执行的关键,就是**顺序结构、选择结构和循环结构** 任何程序本质上都是对数据的处理流程而控制程序如何执行的关键就是顺序结构、选择结构和循环结构。Python 的控制流语法简洁清晰既保留了if-else、for、while、break、continue等经典结构又在 Python 3.10 之后引入了match-case结构化模式匹配使多分支选择更加优雅。 本报告将系统讲解 Python 中三大控制结构的使用方式配合完整代码、逐段解析与亮点总结帮助读者深入理解并灵活应用。二、顺序结构顺序结构是程序最基本的执行方式代码从上到下、逐行执行不做跳转、不做判断、不做重复。几乎所有程序都建立在顺序结构之上选择与循环只是对执行顺序的干预。# 顺序结构示例计算圆的面积importmath radius5areamath.pi*radius**2print(f半径为{radius}的圆面积为{area:.2f})运行结果半径为 5 的圆面积为 78.54解析三条语句依次执行——先赋值radius再计算area最后打印结果。顺序结构看似简单但需要注意变量定义的先后顺序使用变量前必须先赋值否则会抛出NameError。三、选择结构3.1 if-elif-else 分支if-elif-else是 Python 中最常用的选择结构。Python 使用缩进而非花括号来划分代码块同一分支内的语句必须保持相同缩进。# 成绩等级判定score85ifscore90:gradeAelifscore80:gradeBelifscore70:gradeCelifscore60:gradeDelse:gradeFprint(f成绩{score}对应的等级为{grade})运行结果成绩 85 对应的等级为B解析条件从上到下依次判断一旦某个条件成立执行对应分支后便立即跳出整个 if 结构后续分支不再判断。因此当多个条件存在包含关系时必须将范围更小、要求更高的条件放在前面。例如score 90必须写在score 80之前否则 90 分也会在前一个分支被截获“A” 等级永远不会输出。3.2 match-case 结构化模式匹配Python 3.10 引入了match-case语句用于替代复杂的多分支if-elif结构语法上类似于其他语言的switch-case但功能更强。# match-case 示例根据星期编号输出名称day3matchday:case1:print(星期一)case2:print(星期二)case3:print(星期三)case4:print(星期四)case5:print(星期五)case6|7:# 竖线表示或print(周末)case_:# 通配符类似 defaultprint(输入错误)运行结果星期三解析match将变量与各个case模式逐一匹配命中第一个匹配项后执行并退出。|表示或关系_是通配模式接收所有未被前面分支命中的值类似于switch中的default。 需要注意的是match-case并非简单替换if-elif它还支持对序列、字典、对象等进行结构化解构这是if-elif无法做到的。3.3 条件表达式三元运算符对于简单的二选一赋值Python 提供了条件表达式可在一行内完成age20status成年ifage18else未成年print(status)# 成年解析语法为值1 if 条件 else 值2适合值选择场景。但当逻辑复杂或包含副作用时应回退到if-else以保证可读性。四、循环结构4.1 for 循环for循环用于遍历可迭代对象包括列表、字符串、元组、字典、range对象等。# 遍历 rangeforiinrange(1,6):print(i,end )print()# 遍历字符串forcharinPython:print(char,end-)print()# 遍历字典scores{Alice:90,Bob:85,Charlie:92}forname,scoreinscores.items():print(f{name}:{score})运行结果1 2 3 4 5 P-y-t-h-o-n- Alice: 90 Bob: 85 Charlie: 92解析range(1, 6)生成 1 到 5 的整数序列左闭右开。range支持三个参数range(start, stop, step)其中stop不包含在内。 遍历字典时使用.items()可同时获取键和值。4.2 while 循环while循环在条件为True时反复执行循环体适合不确定循环次数的场景。# while 循环猜数字游戏importrandom targetrandom.randint(1,100)attempts0whileTrue:guessint(input(请输入1-100的整数))attempts1ifguesstarget:print(f恭喜猜对了数字是{target}共猜了{attempts}次)breakelifguesstarget:print(太小了)else:print(太大了)解析这里使用while True构造无限循环在猜中时通过break退出。使用while时必须确保循环能够终止否则将形成死循环。4.3 for-else / while-elsePython 的循环可以附带else子句当循环正常结束未被break中断时执行else块。# 判断一个数是否为素数num17foriinrange(2,int(num**0.5)1):ifnum%i0:print(f{num}不是素数能被{i}整除)breakelse:print(f{num}是素数)运行结果17 是素数解析如果for循环中找到了因子并执行了breakelse不会执行如果循环完整走完仍未找到因子说明是素数执行else。这是 Python 独有的优雅写法。五、break 与 continue5.1 break终止整个循环break立即跳出当前所在的最内层循环循环后续代码不再执行。foriinrange(10):ifi5:breakprint(i,end )# 输出0 1 2 3 45.2 continue跳过本次迭代continue跳过当前轮次剩余代码直接进入下一次循环。foriinrange(10):ifi%20:continueprint(i,end )# 输出1 3 5 7 9解析break是彻底退出continue是跳过本轮、继续下一轮。两者都只影响最内层循环在嵌套循环中不会跳出外层循环。六、综合实战学生成绩管理系统下面将顺序、选择、循环结构整合到一个完整示例中defgrade_system():学生成绩管理演示students[]whileTrue:print(\n 学生成绩管理系统 )print(1. 添加学生 2. 查询等级 3. 统计 4. 退出)choiceinput(请选择操作)matchchoice:case1:nameinput(姓名)scorefloat(input(成绩))ifnot0score100:print(成绩必须在0-100之间)continue# 跳过本次重新显示菜单students.append({name:name,score:score})print(添加成功)case2:ifnotstudents:print(暂无学生数据)continuenameinput(输入姓名查询)forsinstudents:ifs[name]name:scs[score]ifsc90:level优秀elifsc80:level良好elifsc60:level及格else:level不及格print(f{name}成绩{sc}等级{level})breakelse:print(未找到该学生)case3:ifnotstudents:print(暂无学生数据)continuetotalsum(s[score]forsinstudents)avgtotal/len(students)highestmax(students,keylambdas:s[score])print(f共{len(students)}名学生平均分{avg:.1f}最高分{highest[name]}({highest[score]}))case4:print(再见)breakcase_:print(无效选择请重试)grade_system()解析该程序综合运用了所有控制结构——while True维持主循环match-case分发菜单选项if-elif-else判定等级break退出系统continue跳过无效输入for遍历查找学生for-else处理未找到的情况。七、亮点总结亮点说明缩进即语法Python 用缩进划分代码块强制统一代码风格可读性极高match-case 模式匹配Python 3.10 新增支持解构、通配、或模式比传统switch更强大循环 else 子句Python 独有特性循环正常结束无break时执行适合搜索场景链式比较60 score 80可直接书写符合数学直觉range 灵活步长range(start, stop, step)可精确控制遍历范围和步长条件表达式x if cond else y一行完成简单二选一代码紧凑八、结语顺序、选择、循环是编程的三大基石。Python 以简洁优雅的语法实现了这些结构if-elif-else和match-case处理分支决策for和while处理重复执行break和continue提供精细的流程控制。掌握这些结构并结合 Python 特有的for-else、条件表达式、链式比较等技巧能够写出既简洁又强大的程序。在实际开发中应根据场景选择合适的结构——简单条件用if-elif多枚举分支用match-case确定次数遍历用for不确定次数用while始终将可读性放在首位。
延伸阅读

更多相关文章

2026/10/16 6:31:34

Python作为一门高级编程语言,以其简洁优雅的语法和强大的功能在软件开发、数据分析、人工智能等领域得到广泛应用

Python作为一门高级编程语言,以其简洁优雅的语法和强大的功能在软件开发、数据分析、人工智能等领域得到广泛应用。基础数据类型和运算符是Python编程的基石,掌握这些基础知识对于编写高效、正确的Python程序至关重要。本报告将深入探讨Python中的三种基…

2026/10/16 7:47:02

技能包+任务图:三小时上线邮件自动分类与回复服务

1. 需求拆解:一句话怎么变成Agent能执行的“任务图”1.1 先把模糊需求拆成确定性步骤那天下午三点,业务方在群里丢过来一句话:“每天几百封客户邮件进来,能不能自动分个类、标个优先级,再顺手生成个回复草稿&#xff0…

2026/10/16 7:47:02

AI应用落地实战:从RAG到Agent架构的工程化演进

做AI应用落地这段时间,我一直保持一个习惯:每隔几周,把手头项目相关的外部动态、内部复盘和技术选型变化整理成一份情报式的笔记。今天这份“AI情报 | 20260930”,正好赶上我们一个智能问答系统从原型转向生产环境的关键节点&…

2026/10/16 7:47:02

办公软件AI助手涨价背后:订阅制、数据飞轮与生态护城河的博弈

最近这段时间,我前后收到不少读者来信,问的问题几乎一模一样:自己公司用的办公套件续费怎么突然贵了这么多?仔细一看,涨价的不是主软件,而是后面多出来的一个叫“AI 助手”的按人头服务。有人当场就取消订阅…

2026/10/16 7:47:02

LeetCode 383 赎金信:从哈希表到定长数组的频次判定优化

刷题刷到 383 这道“赎金信”,基本是躲不过去的。它被放在哈希表分类里,题目短、场景有意思,核心就一句话:判断字符串 ransomNote 能不能用字符串 magazine 里的字符拼出来,而且 magazine 里每个字符只能用一次。难吗&…

2026/10/16 7:47:02

Odoo视图层进阶:看板、图表与视图继承实战指南

/* 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 7:42:01

基于Vue+SpringBoot+Node.js的评奖评优管理系统全栈实践

这不是我第一次做高校业务系统,但每次遇到“评奖评优”这类流程型需求,还是会格外谨慎。原因很简单:表面上它只是“学生提交申请、老师审核、名单公示”三步,实际上背后牵涉多角色协作、材料完整性、量化打分、状态变更留痕、批次…

2026/10/16 5:33:43

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/16 4:03:48

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/15 13:42:16

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/16 0:01:11

Cephadm实战指南:Linux系统工程师的生产级Ceph集群部署与排障

简介:本资源是一份完整的Ceph分布式存储系统中文技术文档合集,面向Linux系统运维工程师、云平台架构师及存储方向开发者,帮助读者系统掌握Ceph集群的部署、配置与运维核心能力。文档覆盖对象存储(RGW)、块设备&#xf…

2026/10/16 0:01:11

ITK中SpatialObject几何体系解析:坐标系、变换与管道集成

1. 空间对象的定位:为什么 ITK 需要一套几何描述体系很多刚开始接触 ITK 的朋友,包括我自己,最初都是被它的图像滤波、配准、分割这些“正统”功能吸引进来的。等真正上手做点实际项目,比如把分割出来的器官边界做量化分析、给血管…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑