在生活中,我们总是要做出很多的选择,程序设计也是一样。
选择语句也称为条件语句,即按照条件选择执行不同的代码块。Python中选择语句主要有3种形式,分别为if语句、if…else语句和if…elif…else多分支语句。
if是Python中的关键字,同时也被用来组成选择语句,其语法格式如下:
if表达式: 语句块
其中,表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式(例如:a>b and a!=c),如果表达式为真,则执行语句块;如果表达式为假,就跳过语句块,继续执行后面的语句。
如果遇到只能二选一的情况,例如,某计算机专业学生进入公司进行岗位选择,在人工智能和Web开发中二选一,Python提供了if…else语句解决类似问题,其语法格式如下:
if表达式: 语句块1 else: 语句块2
使用if…else语句时,表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式,如果满足条件,则执行if后面的语句块,否则,执行else后面的语句块。这种形式的选择语句相当于汉语里的关联词语“如果……否则……”。
if…else语句可以使用条件表达式进行简化,如下面的代码:
a=-9 if a>0: b=a else: b=-a print(b)
可以简写成:
a=-9 b=a if a>0 else -a print(b)
上段代码主要实现求绝对值的功能,如果a>0,就把变量a的值赋值给变量b,否则将-a赋值给变量b。使用条件表达式的好处是可以使代码简洁,并且有一个返回值。
程序中使用if…else语句时,如果出现if语句多于else语句的情况,那么else语句将会根据缩进确定该else语句属于哪个if语句,如下面的代码:
a=-1 a>=0: if a>0: print('a大于0') else: print('a等于0')
上面的语句将不输出任何提示信息,这是因为else语句属于第3行的if语句,所以当a小于0时,else语句将不执行。而如果将上面的代码修改如下:
a=-1 if a>=0: if a>0: print('a大于0') else: print('a小于0')
将输出提示信息“a小于0”。此时,else语句和第2行的if语句配套使用。
在开发程序时,如果遇到多选一的情况,则可以使用if…elif…else语句,该语句是一个多分支选择语句,通常表现为“如果满足某种条件,就会进行某种处理;否则,如果满足另一种条件,则执行另一种处理……”。if…elif…else语句的语法格式如下:
if表达式1: 语句块1 elif表达式2: 语句块2 elif表达式3: 语句块3 ... else: 语句块n
使用if…elif…else语句时,表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式,如果表达式为真,执行语句;如果表达式为假,则跳过该语句,进行下一个elif的判断;只有在所有表达式都为假的情况下,才会执行else中的语句。if…elif…else语句的流程如图2.2所示。
图2.2 if…elif…else语句的流程图
前面介绍了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选择语句可以有很多种嵌套方式,开发程序时,可以根据自身需要选择合适的嵌套方式,但一定要严格控制好不同级别代码块的缩进量。
【例2.1】判断是否酒后驾车。
规定:车辆驾驶人员血液中的酒精含量小于20mg/100ml的不构成饮酒驾驶行为,酒精含量大于或等于20mg/100ml、小于80mg/100ml的为饮酒驾车,酒精含量大于或等于80mg/100ml的为醉酒驾车。现编写一段Python代码判断是否酒后驾车。
通过使用嵌套的if语句实现根据输入的酒精含量值判断是否酒后驾车的功能,代码如下:
print("\n为了您和其他人的安全,严禁酒后开车!\n") proof=int(input("请输入每100毫升血液的酒精含量:")) if proof<20: print("\n不构成饮酒行为,可以开车") else: if 80>proof>=20: print("\n已经达到酒驾标准,请不要开车") else: print("\n已经达到醉驾标准,千万不要开车")