条件运算
布尔型
布尔型(bool
)表示条件的真假,只有两个取值:True
(真)和 False
(假)。
- 任何数据都可以通过
bool()
函数转换为布尔型。 - 空数据(如
0
,0.0
, ’’ 等)转换为False
,其他值为True
。
比较运算符
用于比较相同类型的数据,结果为布尔型。常用比较运算符:
- 大于:
>
- 小于:
<
- 大于等于:
>=
- 小于等于:
<=
- 不等于:
!=
- 相等:
==
逻辑运算符
用于组合多个条件。常用逻辑运算符:
and
(与):多个条件同时成立,结果为True
。or
(或):多个条件只需一个成立,结果为True
。not
(非):取反,将True
变为False
,反之亦然。
成员运算符
用于测试一个值是否存在于序列或集合中。成员运算符:
in
:如果找到值在序列中,返回True
。not in
:如果未找到值在序列中,返回False
。
身份运算符
用于比较两个对象的内存地址,即判断两个对象是否为同一对象。身份运算符:
is
:如果两个变量引用同一个对象,返回True
。is not
:如果两个变量引用不同对象,返回False
。
条件分支
条件分支语句使程序能够根据条件的真假来决定执行哪一部分代码。主要包括三种结构:
- 单分支:仅在条件成立时执行语句块。
- 二分支:根据条件的真假分别执行不同的语句块。
- 多分支:根据多个条件中的一个成立情况执行相应的语句块。
单分支结构
语法格式:
|
|
if
是关键字,后有一个空格。<条件>
是表达式,其结果为布尔型。- 条件语句结束后必须使用冒号
:
。 - 语句块是条件成立后执行的一条或多条语句,必须缩进(4个空格)。
案例解释:
用户输入考试成绩,判断成绩是否及格(60分及格)。
|
|
二分支结构
语法结构:
|
|
- 如果
<条件>
成立,执行语句块1
。 - 如果
<条件>
不成立,执行语句块2
。
案例解释:
用户输入考试成绩,判断成绩是否及格。
|
|
多分支结构
语法结构:
|
|
- 从第一个条件开始,哪个条件成立,就执行对应的代码块。
- 如果没有任何条件成立,则执行
else
下的代码块(else
是可选的)。
案例解释:
用户输入成绩,程序根据不同的分数区间判断并输出成绩等级(A, B, C, D, E)。
|
|
Match-Case 语句
概述
match-case 是 Python 3.10 引入的一项新特性,旨在通过模式匹配简化条件判断逻辑。它不仅适用于简单值,还能处理序列、字典和类实例等复杂数据结构。
关键点:
- match-case 比传统的 if-elif-else 结构更直观,尤其适合多分支场景。
- 它支持多种匹配类型,如常数、列表、字典、对象等。
基本语法
|
|
解释:
match
后跟一个表达式,用于获取匹配值。- 每个
case
后面是要测试的模式。匹配成功时执行相应语句块。 _
用于默认情况,类似于传统的 else 语句。
使用守卫条件
|
|
解释:
- 在
case
后添加if
关键字,可以对匹配结果进行额外判断。 - 这有助于精确控制匹配逻辑,适用于需要多层次条件检查的情况。
高级模式匹配
匹配序列
|
|
解释:
- 使用元组模式匹配,可以处理多种点的位置情况。
- 每个
case
检查点的不同组合,并执行相应的操作。
匹配字典
|
|
解释:
- 对于字典,可以匹配特定的键值对。
- 使用通配符
_
处理未列出的情况,避免遗漏。
注意事项
-
模式匹配顺序: match-case 会按定义的顺序检查每个
case
,一旦找到匹配的情况,就会执行该语句块,不再继续检查后续的条件。 -
不可变对象: match-case 最适合处理不可变对象,如数字、字符串和元组,因为它们在匹配时不会改变状态。要谨慎使用可变对象(如列表),因为可能导致意外行为。
-
默认情况: 建议始终包含一个
case _
,用于处理所有未被其他case
处理的情况,这样可以避免遗漏。