摘要:程序不应只是按顺序执行的一串命令,还需要根据条件做出判断,或反复执行某段代码。这种决定程序执行路径的机制称为“控制结构”。
第六章 程序控制结构
程序不应只是按顺序执行的一串命令,还需要根据条件做出判断,或反复执行某段代码。这种决定程序执行路径的机制称为“控制结构”。
控制结构是程序逻辑的核心,使计算机具备选择和循环的能力。Python 提供了简洁直观的语法,让程序能够根据不同条件执行不同分支,或在满足条件时持续重复。
学习目标:
(1)理解程序流程控制的三种基本结构:顺序、选择与循环。
(2)掌握 if 条件语句、三元表达式与 match-case 分支结构。
(3)掌握 while 与 for 循环及循环控制语句(break、continue)。
(4)能运用控制结构编写含判断与重复逻辑的实用程序。
6.1 程序流程及控制结构
当计算机执行一个程序时,并不是一次性完成所有操作,而是按照一定的逻辑顺序逐步推进。
6.1.1 程序流程图
算法和程序逻辑可以用多种方式表示:自然语言、伪代码、传统流程图、N-S 图(结构化流程图)、PAD 图等。
传统流程图使用 ANSI(美国国家标准化协会)规定的一些标准图形符号来表示。
传统流程图常用图形符号
流程图用“图”的方式呈现程序逻辑,使复杂的控制关系更易理解。
程序的执行路径总是沿着箭头,从一个步骤流向下一个步骤。
6.1.2 三种基本控制结构
顺序结构、选择结构和循环结构是控制程序执行路径的三大基本形式,它们共同构成了所有算法的逻辑骨架。
三种基本结构示意图
(1)顺序结构
顺序结构是最基本的流程形式。
语句从上到下依次执行,每条语句仅执行一次。
(2)选择结构
程序根据条件判断执行不同的路径。
Python 使用 if、elif、else 等实现。
(3)循环结构
重复执行一段代码,直到条件不再满足。
Python 提供 while 和 for 两种循环语句。
6.1.3 程序控制结构扩展
除了三种基本结构,Python 还提供更灵活的控制机制,使程序在异常情况或复杂循环中保持稳定。
(1)异常处理控制
当程序运行中出现错误(如除零、类型不匹配、文件未找到等)时,会触发异常。若未处理,程序会中断。
异常控制结构允许程序在出错时跳转到指定的“异常处理”部分继续执行,保证健壮性。
异常处理流程示意图
异常控制使程序能够在遇到问题时“有序转移”,而非直接崩溃。
(2)循环控制语句
在循环结构中,break 与 continue 可实现更精细的流程控制。
break:立即终止当前循环,跳出循环体。
continue:跳过本次循环的剩余部分,直接进入下一次循环判断。
这些控制语句让循环更加灵活。
6.2 选择结构程序设计
程序在执行过程中,常常需要根据不同条件来决定执行不同的语句块。这种“按条件选择路径”的能力称为“选择结构”。
6.2.1 条件表达式与逻辑运算
选择结构的判断依据是“条件表达式”,其结果为布尔值 True 或 False。
6.2.1.1比较运算符
Python 的比较运算符分为三类:值比较、身份比较和成员比较。
(1)值比较
用于比较两个值的大小或相等关系。
运算符
含义
示例
结果
等于
5 == 5
True
不等于
5 != 3
True
大于
7 > 4
True
小于
3
True
大于等于
6 >= 6
True
小于等于
2
True
(2)身份比较
用于判断两个变量是否引用同一对象。
运算符
含义
示例
结果
is
是否为同一对象
a is b
True / False
is not
是否不是同一对象
a is not b
True / False
(3)成员判断
用于判断元素是否属于某个序列或集合。
运算符
含义
示例
结果
in
是否包含
'a' in 'cat'
True
not in
是否不包含
'b' not in 'cat'
True
• 三种比较运算符属同一优先级,均支持链式比较(但不推荐混写)。
• 值相等用 ==;是否为 None 用 is。
• 浮点误差会导致直观不相等。比如:
print(0.1 + 0.2 == 0.3) # False6.2.1.2 逻辑运算符
用于组合多个条件判断。
运算符
含义
示例
结果
and
同时为真
x > 0 and y > 0
True
or
任一为真
x
True
not
取反
not True
False
• 逻辑判断依赖 Python 的。
• and、or 具有短路求值特性。
• not 始终返回布尔值。
• and、or 可能返回某个操作数本身,而非布尔值。 在 Python 中,逻辑表达式返回最后被求值的操作数,而非强制转换为 True / False。
示例:判断闰年
print(f"{year}年不是闰年。")6.2.2 if 语句
if 语句可根据条件表达式的真假,决定是否执行某段代码。
6.2.2.1单分支结构:if
语法格式:
语句块示例:
print("天气很热,注意防晒。")程序只在条件为真时执行语句块,否则跳过。
6.2.2.2 二分支结构:if–else
语法格式:
语句块2示例:
print("这是一个奇数。")6.2.2.3多分支结构:if–elif–else
语法格式:
语句块4示例:
print("不及格")Python 会从上到下依次判断条件,第一个为真即执行对应语句块,其余部分将被忽略。
6.2.3 三元条件表达式
三元条件表达式(也称“条件运算表达式”)是一种简洁写法,用于根据条件返回不同结果。
语法格式:
value_if_true if condition else value_if_false示例:
print(status)相当于:
6.2.4 嵌套条件与层次判断
在实际应用中,判断条件可能是多层次的。if 语句可以嵌套使用,以表达更复杂的逻辑关系。
示例:
print("请继续努力。")提示:
过多的嵌套会降低可读性,应优先使用逻辑运算符或提前返回的方式简化结构。
6.2.5 结构模式匹配 match-case
是结构模式匹配语句(Python 3.10+),用于根据表达式的取值匹配不同的模式(pattern),并执行相应的语句块。
语法格式:
默认语句块流程说明:
(1)match 先计算“表达式”的值;
(2)程序依次尝试与各个 case 的“模式”进行匹配;
(3)第一个匹配成功的分支被执行,其余分支跳过;
(4)若所有模式都不匹配,则执行 case _:,作为默认分支。
示例:
print("无效命令。")提示:
_ 是一个普通的变量名,只是 Python 社区约定俗成地把它当作占位符或哑变量来用,表示“这个值我不关心”。
6.3 选择结构综合示例
例 6.3.1 目标检测结果的置信度判断
当计算机视觉模型输出预测结果时,我们通常会根据置信度判断结果是否可信。
方法一:if-else 写法
print(f"识别不确定(置信度:{confidence}),建议重新检测。")运行示例:
识别不确定(置信度:0.76),建议重新检测。方法二:三元条件表达式写法
print(message)例 6.3.2 求一元二次方程的根
输入一元二次方程的三个系数 a、b、c,求此方程的根。
print(message)示例输出:
方程有两个共轭虚根:(-1+2j) 和 (-1-2j)例 6.3.3 网贷风险提示
根据输入的贷款金额,计算出预计一年后应偿还总额以及三年后利滚利(按年复利)应偿还总额,并给出不同的风险提示。
示例输出:
三年后利滚利总额:16430.32元小结
本次课介绍了程序的基本控制结构与选择结构的实现方式。通过 if、elif、else 与 match-case,Python 让程序能够根据不同条件灵活决策。
下一次课将学习循环结构程序设计,让程序在满足条件时能重复执行操作。
“点赞有美意,赞赏是鼓励”
来源:柯梧教育