Python从入门到精通——3. 1 分支结构
前言
迄今为止,我们的教程都是顺序结构,也就是一条语句一条语句按照顺序从上到下依次执行。但是在实际的生产活动中,顺序执行并不能满足所有的实际情况,我们需要在某些时候有一定的分支,通过不同的条件来进行不同的操作。这就是分支结构,也是条件控制。
在Python中,条件语句是通过一条或者多条语句的执行结果(True 或者False)作为条件来决定执行的代码块。可以通过下图来简单了解条件语句的执行过程
图片来源:菜鸟教程
if相关语句
条件测试
每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为条件测试。Python正是通过条件测试的值来觉得是否执行if语句中的代码。如果条件测试值为Ture,则执行if语句中的代码;如果为False,就忽略转而执行后面的语句
我们先来介绍一下布尔语句:布尔语句的值就是True或False,当你使用一个表达式来进行判断相等或者不相等这些情况时,将会返回一个布尔值,这些表达式可以看作布尔语句。
单个if语句
检查是否相等
大多数条件测试都是两个表达式的值之间进行比较。最简单的条件测试就是检查变量的值是否与一个特定值是否相等:
直接使用两个等号==表示比较两边是否相等,相等则为True,不相等则为False

注意:这里一定不要写成一个等号了,一个等号是赋值符
Python中检查是否相等是区分大小写的,当==两边的字母相同但是大小写不同时,会被认为两边不相等。如果想要忽略大小写可以使用lower()方法,这样可以把变量的值转换成全小写再进行比较
检查是否不等
判断两个值是否不等,可以使用不等运算符!=(ps:这里的感叹号是英文的)
检查多个条件
有时候你可能会有多个条件,然后你想确定你的变量是否满足这多个条件,这样我们就可以使用and和or
使用and检查多个条件
如果你想让多个条件都要同时满足,才能继续运行if语句内的程序,你就可以使用and,当多个条件同时满足时,表达式的值才为True,只要有一个不满足,值就为False
ps:如果有些表达式很复杂,可以对每个表达式加上括号来增加可读性
使用or检查多个条件
关键词or也可以检查多条件,但是只要满足一个条件,就可以通过条件测试,只有当全部条件都不满足时,整个表达式才为False
if-elif-else语句
以上只是简单的if语句,但是我们的分支结构当然没这么简单,我们一般是利用 if-elif-else语句来实现我们的需求。在Python中,是没有C语言中的else if的,而是用elif进行代替,但是效果都是一样的
这里我们用一个GIF动画来演示分支结构的执行过程:
如果只有两个分支,那么使用if-else语句也就够了
如果是三个分支及以上,那么我们就要使用if-elif-else语句了,这里的elif当然可以有多层,代表带个分支

对于else是可以省略的,有时我们可以利用elif来代替else,可能会让我们的代码逻辑更加清晰
ps:在if-elif-else语句中,我们一般对于其条件设定是没有相交部分的,因为如果有相交部分,代码只会执行第一个满足条件的语句,然后就会直接跳出分支结构,这样后面满足的条件的代码块就会被忽略
可以看到上面的变量对于第一个条件和最后一个条件都满足,但是只执行了第一个条件的代码块,而忽略了最后一个条件的代码块
if语句的嵌套
对于if语句,当然也是可以嵌套的,一般嵌套的用处就是对于一个大范围逐渐判断到一个精确的范围。
嵌套的用处很多,今后遇到了会详细解释
其他用法
确定列表是否为空
对于一个空列表可以当作布尔值来看待,这是有人诟病Python的地方,但是有人也会觉得这样很方便。先举个例子:
可以看到,如果列表为空,那么其可以看作布尔值为False,如果列表中有元素,那么可以看成布尔值为True,这样可以很方便的判断列表是否为空,但是如果你想规范的你的代码,你可以使用内置函数len()来得到列表的长度,从而判断列表是否为空
match……case语句
在Python中是没有C语言的switch……case语句的,但是从Python3.10之后,新增了match……case语句用来进行条件判断,这样就可以不用使用一连串的if-else来进行判断了match 后的对象会依次与 case 后的内容进行匹配,如果匹配成功,则执行匹配到的表达式,否则直接跳过,_ 可以匹配一切。
对于case _ :类似于C语言中的default,当其他case都无法匹配时,就将匹配这条,并且永远都可以匹配成功

结束语
以上就是分支结构的全部内容,后续如果有遗漏的将会新出文章进行补充,欢迎在评论区留下你的疑问以及文章遗漏的部分
以下是本章练习题
来源:Python-100-days
[!NOTE] 练习1 英制单位英寸并与公制单位厘米互换
输入一个数据,并确定其单位,然后与另外一个单位进行互换。比如输入的英寸则转换为厘米
1 | value = float(input('请输入长度: ')) |
[!NOTE] 练习2 百分制成绩转换为等级制成绩
要求:如果输入的成绩在90分以上(含90分)输出A;80分-90分(不含90分)输出B;70分-80分(不含80分)输出C;60分-70分(不含70分)输出D;60分以下输出E。
1 | score = float(input('请输入成绩: ')) |
也可以使用match-case语句,自行核对
[!NOTE] 练习3 输入三条边长,如果能构成三角形就计算周长和面积
判断输入的边长能否构成三角形,如果能则计算出三角形的周长和面积
1 | a = float(input('a = ')) |
说明: 上面使用的通过边长计算三角形面积的公式叫做海伦公式
- Title: Python从入门到精通——3. 1 分支结构
- Author: Dunm1e
- Created at : 2024-09-28 18:26:37
- Updated at : 2024-09-28 16:52:44
- Link: https://dunm1e.github.io/2024/09/28/98a7c719df5e/
- License: This work is licensed under CC BY-NC-SA 4.0.