接上篇《8、Python的输入输出》
上一篇我们学习了Python的输入和输出相关内容。本篇我们来学习Python的控制流语句。
一、流程控制语句的含义
之前我们分别学习过“变量及数据类型”、“运算符”,其中“变量及数据类型”相当于我们学习自然语言中的“字”,而“运算符”类似于相应的自然语言中的“词”,本篇我们要学习的“流程控制语句”,就是一个完整的“句子”甚至是一篇完整的“作文”。
官方释义:通过流程控制语句可以改变程序的执行顺序,也可以让指定的程序反复执行多次。流程控制语句在Python中包括三个部分。顺序执行语句、条件语句(if/else)和循环语句(for/while),如下图所示:
下面我们来一一学习它们。
二、if判断语句
if语句用于控制程序的执行,判断条件是否成立,根据条件的判断结果,选择相应执行的分支。
(1)基本if/else语句
基本形式为if/else:
if 判断条件:
执行的代码块1
else:
执行的代码块2
执行的流程是:当表达式的布尔值为真时,执行代码块1,为假时执行代码块2。
注意,冒号的下一行的缩进(四个空格)必须存在,用来标识执行代码的归属,两个代码块只能有一个被执行,这取决于哪个分支的条件成立。
如果没有else,或不用处理else的判断结果,则只需要判断if即可,语法为:
if 判断条件:
执行的代码块1
示例:
# if中的条件成立,就执行冒号下的语句,否则执行else下的
age = 18
if age >= 18:
# if和else下面的代码,必须是一个Tab键,或者4个空格
print("我已经成年了")
else:
print("我还未成年")
运行结果:
示例:
# if中的条件成立,就执行冒号下的语句,否则执行else下的
age = 16
if age >= 18:
# if和else下面的代码,必须是一个Tab键,或者4个空格
print("我已经成年了")
else:
print("我还未成年")
运行结果:
(2)if嵌套语句
有时候,一个条件成立无法满足需求,需要用多重判断,那么就要用到if嵌套语句,基本形式如下:
if 判断条件1:
# 代码块1,其内部的if语句无论多复杂,都属于代码块1
if 分支条件1: # 分支条件
执行的分支代码块1.1 # 如果该分支条件成立,执行的代码块
else:
执行的分支代码块1.2 # 分支条件不成立执行的代码块
else:
# 代码块2,当代码块1条件不成立时执行的代码块
执行的代码块2
示例:
if 有疫情:
if 疫情严重:
戴N95口罩
else:
戴普通医学口罩
else:
不戴口罩
执行过程:上述逻辑就是根据是否有疫情判断,如果没有疫情,则执行第6行的else。而如果有疫情这个条件成立,程序就进入代码块1中,此时,程序会再次判断根据子条件作出判断,疫情是否严重,如果严重,则戴N95口罩,否则戴普通医学口罩。执行过程如下图所示:
注意:if语句的嵌套不易过多,这样会降低代码的可读性。
(3)elif语句
elif语句主要用于在else的情况下,判断另一种情况。
这里我们举一个例子,例如下面这个成绩情况判断的逻辑:
score = int(input("请输入你的分数:"))
if score>=90:
print("优秀")
if score>=80:
print("良好")
if score>=70:
print("中等")
if score>=60:
print("及格")
if score<60:
print("不及格")
我们执行后,输入90分,想得到的是“优秀”,但是结果却是:
这是因为单条if条件只要判断成立,就会执行后面的代码块,不受前面的if语句结果影响,你可以理解为每个if语句是独立的一行,你只是重复写了不同条件的if来进行分别判断而已。
这时我们要通过elif语句来将判断分隔并延续判断,即不满足if条件后进入else且立刻进入下一个新的if判断,如果已经满足if条件,则不会再进入elif的代码块,这样就避免上面的重复判断,优化后代码:
score = int(input("请输入你的分数:"))
if score>=90:
print("优秀")
elif score>=80:
print("良好")
elif score>=70:
print("中等")
elif score>=60:
print("及格")
elif score<60:
print("不及格")
效果:
至此,有关Python的流程控制语句的条件语句(if/else)的内容就讲解完毕了,下一篇我们继续来学习流程控制语句中的循环语句(for/while)。
参考:尚硅谷Python爬虫教程小白零基础速通教学视频
转载请注明出处:https://blog.csdn.net/acmman/article/details/129229563