前言
在生活中,我们总是要做出许多选择,程序也是一样。比如下面的例子:
- 如果输入的用户名和密码正确,提示登录成功,否则,提示登录失败。
- 如果考试成绩大于等于60分,则及格,否则不及格。
以上例子中的判断,就是程序中的选择语句,也称为条件语句,即按照条件选择执行不同的代码片段。Python中选择语句主要有 3 种形式,分别为:if 语句、if…else 语句、if…elif…else 多分支语句。今天我们就详细来看看这3种选择语句的用法。
一、最简单的 if 语句
Python中使用 if 保留字来组成选择语句,简单的语法格式如下:
if 表达式:
语句块
如果表达式为真,则执行 “语句块”;如果表达式为假,就跳过 “语句块”,继续执行后面的语句,这种形式的 if 语句相当于汉语里的关联词语 “如果…就…”,其流程图如下图所示:
接下来看一下 if 语句在代码中的实际应用,代码如下:
score = int(input("请输入学生考试成绩: ")) # 输入学生考试成绩
if score >= 60: # 如果输入的成绩大于等于60,则执行冒号下面的语句块,否则跳过不执行
print("恭喜你,考试及格啦!!!")
print("程序执行完毕") # 最后打印输出"程序执行完毕"
上述代码执行后有两种结果,一种是表达式结果为真(即满足条件),则执行冒号下面的语句块,结果如下图所示:
另一种是表达式结果为假(即不满足条件),则跳过不执行冒号下面的语句块,结果如下图所示:
注意:当表达式结果为假时,程序只是会跳过不执行冒号(:)下面的语句块,但是会继续往下执行代码剩余部分。
讲到这里,有小伙伴可能会有疑虑:我怎么区分哪些是语句块,哪些是正常代码呢?我先把上述代码中的语句块和正常代码给大家标注出来,如下图:
我们可以看到,正常代码和表达式之间是平等关系,代码开头是没有缩进的,而语句块和表达式之间是隶属关系,在Python中隶属关系是用冒号+缩进表示的。至于代码缩进规则在此就不做详细赘述,还有不明白的小伙伴,可以看我之前的博客【Python语法特点之代码缩进规则】。
说明:使用if语句时,如果隶属的语句块只有一条语句,那么语句块也可以直接写到冒号 “:” 的右侧。
例如下图代码所示:
二、if…else 语句
如果遇到只能二选一的条件,比如:我们在面试填写个人简历的时候,性别只能填男或者女。诸如此类的情况在生活中非常多,Python中就提供了 if…else 语句来解决类似问题,其语法格式如下:
if 表达式:
语句块1
else:
语句块2
如果表达式为真,则执行 if 后面的语句块,否则,执行 else 后面的语句块,这种形式的选择语句相当于汉语里的关联词语 “如果…否则…”,其流程图如下图所示:
接下来看一下 if…else 语句在代码中的实际应用,代码如下:
score = int(input("请输入面试者笔试成绩: "))
if score >= 60:
print("恭喜你,被录用了!!!")
else:
print("不好意思,你与我们的需求不符。")
代码运行后结果有两种,一种是表达式结果为真,如下:
一种是表达式结果为假,如下:
说明:if…else 语句可以使用条件表达式进行简化。
条件表达式的语法格式如下:
语句块1 if 表达式 else 语句块2
上述语法格式中,语句块1是 if 后面的表达式结果为真时执行,语句块2是表达式结果为假时执行。用法实例如下图代码所示:
注意:在使用 else 语句时,else 一定不可以单独使用,它必须和保留字 if 一起使用。
例如下图所示代码就是错误的:
三、if…elif…else 语句
平时在网上购物时,通常都有多种付款方式供我们选择,比如微信、支付宝、银行卡等等,这时用户就需要从多个选项中选择一个。在开发程序时,如果是遇到多选一的情况,则可以使用 if…elif…else 语句,该语句是一个多分支选择语句。
if…elif…else 语句的语法格式如下:
if 表达式1:
语句块1
elif 表达式2:
语句块2
elif 表达式3:
语句块3
...
else:
语句块n
如果表达式为真,则执行语句;而如果表达式为假,则跳过该语句,进行下一个 elif 的判断;只有在所有表达式都为假的情况下,才会执行 else 中的语句。if…elif…else 语句的流程如下图所示:
注意:if 和 elif 都需要判断表达式的真假,而 else 则不需要判断;另外,elif 和 else 都必须与 if 一起使用,不能单独使用。
接下来看一下 if…elif…else 多分支语句在代码中的实际应用,代码如下:
print("在古希腊神话中,玫瑰集爱情与美丽于一身,所以人们常用玫瑰来表达爱情。")
print("但是不同朵数的玫瑰花代表的含义是不同的。")
print("---------------------------------------------------------")
# 获取用户输入的朵数,并转为整数
num = int(input("输入你想送几朵玫瑰花,小十一会告诉你含义: "))
if num == 1: # 判断是否为1朵
print("1朵: 你是我的唯一!!!")
elif num == 3: # 判断是否为3朵
print("3朵: I Love You!!!")
elif num == 7: # 判断是否为7朵
print("7朵: 我偷偷的爱着你!!!")
elif num == 10: # 判断是否为10朵
print("10朵: 十全十美!!!")
elif num == 11: # 判断是否为11朵
print("11朵: 一心一意!!!")
elif num == 99: # 判断是否为99朵
print("99朵: 天长地久!!!")
elif num == 108: # 判断是否为108朵
print("108朵: 求婚!!!")
else: # 如果上述条件都不满足,则执行下面语句
print("小十一也不知道了,可以考虑送1朵、3朵、7朵、10朵、11朵、99朵、108朵哦!")
代码运行之后就有多种可能的结果,凡是满足上面任意一个表达式,则会执行所属的语句块,如果均不满足,则会执行else下面的语句块。比如下图运行结果所示:
四、if 语句的嵌套
前面介绍了 3 种形式的 if 选择语句,这 3 种形式的选择语句之间都可以相互嵌套。
在最简单的 if 语句中嵌套 if…else 语句,形式如下:
if 表达式1:
if 表达式2:
语句块1
else:
语句块2
在 if…else 语句中嵌套 if…else 语句,形式如下:
if 表达式1:
if 表达式2:
语句块1
else:
语句块2
else:
if 表达式3:
语句块3
else:
语句块4
说明:if 选择语句可以有多种嵌套方式,开发程序时,可以根据自身需要选择合适的嵌套方式,但一定要严格控制好不同级别代码块的缩进量。