8.【Python编程】条件控制结构
备注: 本教程主要使用Python3.6在jupyter notebook上编程实现。Python环境配置参考《【Python学习】Windows10开始你的Anaconda安装与Python环境管理》或者《【Python学习】纯终端命令开始你的Anaconda安装与Python环境管理》。
8.1 代码块与分支的概念
python的代码块是通过不同的缩进来划分的,相同的缩进表示相同的代码块。
python通过if语句实现条件分支。其可以划分为:
- 单向判断:
if condition_1:
# 分支1
# 主代码
- 双向判断:
if condition_1:
# 分支1
else:
# 分支2
# 主代码
- 多向判断:
if condition_1:
# 分支1
elif condition_2:
# 分支2
...
else:
# 分支3
注意:
1、每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
3、在Python中没有switch – case语句。
例子:
# 输入年龄,判断是否成年了
age = input("请输入你的年龄")
age = int(age) # 将字符串转换为整数
if age <=0:
print("请输入大于0的整数!")
elif age<18:
print("你还是一个未成年人。")
else:
print("你已经成年了")
请输入你的年龄21
你已经成年了
# 输入一个数字,判断这个数字是正数、负数或零
num = float(input("输入一个数字: "))
if num > 0:
print(num, "是正数")
elif num == 0:
print(num, "是零")
else:
print(num, "是负数")
输入一个数字: 21.6
21.6 是正数
判断是否为酒后驾车
如果规定,车辆驾驶员的血液酒精含量小于 20mg/100ml 不构成酒驾;酒精含量大于或等于 20mg/100ml 为酒驾;酒精含量大于或等于 80mg/100ml 为醉驾。先编写 Python 程序判断是否为酒后驾车。
ac = int(input("输入驾驶员每100ml血液的酒精含量(mg):"))
if ac < 20:
print("该驾驶员不构成酒驾")
elif ac < 80:
print("该驾驶员已构成酒驾")
else:
print("该驾驶员已构成醉驾")
输入驾驶员每100ml血液的酒精含量(mg):120
该驾驶员已构成醉驾
8.2 if的嵌套
在嵌套 if 语句中,可以把 if…elif…else 结构放在另外一个 if…elif…else 结构中。需要注意的是,在相互嵌套时,一定要严格遵守不同级别代码块的缩进规范。
if condition_1:
# 分支1
if condition_2:
# 分支2
elif condition_3:
# 分支3
else:
# 分支4
elif condition_4:
# 分支5
else:
# 分支6
判断是否为酒后驾车
如果规定,车辆驾驶员的血液酒精含量小于 20mg/100ml 不构成酒驾;酒精含量大于或等于 20mg/100ml 为酒驾;酒精含量大于或等于 80mg/100ml 为醉驾。先编写 Python 程序判断是否为酒后驾车。
ac = int(input("输入驾驶员每100ml血液的酒精含量(mg):"))
if ac < 20:
print("该驾驶员不构成酒驾")
else:
if ac < 80:
print("该驾驶员已构成酒驾")
else:
print("该驾驶员已构成醉驾")
输入驾驶员每100ml血液的酒精含量(mg):120
该驾驶员已构成醉驾
8.3 列表推导式中的if语句
列表推导式是Python构建列表(list)的一种快捷方式,可以使用简洁的代码就创建出一个列表
列表推导式是通过一个可迭代对象(例如:range(15))来生成列表的
列表推导式会遍历后面的可迭代对象,然后按照for前的表达式进行运算,生成最终的列表
如果有if条件语句,for遍历后紧跟着进行条件判断
如果有多个for循环,则最终的数据数量为多个for循环的笛卡尔积
可以进行嵌套的列表推导,与嵌套for循环的原理相同
- 当只有 if 时,列表生成式构造为 [最终表达式 - (范围选择 - 范围过滤)]
# 创建一个列表,该列表由0~14的所有偶数组成
list1 = [i for i in range(15) if i%2 ==0] # 带if条件的列表推导式
print("list1=",list1)
list1= [0, 2, 4, 6, 8, 10, 12, 14]
- 当同时有
if
和else
时,列表生成式构造为 [最终表达式 - 条件分支判断 - 范围选择]
# 给定一个列表[1,3,6,8,12,15,20,19,33,38,100],将列表中的偶数除以2,奇数则直接置0
list2 = [1,3,6,8,12,15,20,19,33,38,100]
list3 = [int(num/2) if num%2 ==0 else 0 for num in list2] # 带if-else条件的列表推导式
print("list3=",list3)
list3= [0, 0, 3, 4, 6, 0, 10, 0, 0, 19, 50]