1 嵌套的条件语句
条件语句是可以嵌套的,在条件测试的值为True后,有时候需要检查其他的条件。在这种情况下,可以使用嵌套的条件语句。
嵌套的条件语句的执行流程如图所示。
需要注意的是,每多嵌套一层条件语句,就需要多一层缩进。下面是一个嵌套条件语句的示例:
- >>> a = 10
- >>> b = 5
- >>> c = 13
- >>> if a < 20:
- ... print('a小于20')
- ... if b > 3: # 增加一层缩进
- ... print('a小于20且b大于3')
- ... if c == 15: # 每多一层嵌套就要多一层缩进
- ... print('a小于20,b大于3且c等于15')
- ...
- a小于20
- a小于20且b大于3
与if同一组的elif/else要保持对应的缩进层级。例如,BMI可以用来衡量身体的肥胖指数,计算公式是体重(kg)除以身高(m)的平方,这个程序首先让用户输入身高和体重,然后计算出BMI值,最后输出结果:
- height = float(input('请输入您的身高(单位:米):')) # 用户输入身高
- weight = float(input('请输入您的体重(单位:千克):')) # 用户输入体重
- if height < 2.5 and weight > 25: # <1>粗略判断身高和体重是否在正常范围内
- bmi = weight / height ** 2 # 计算bmi值
- if bmi < 18.5: # <2>根据bmi值判断肥胖指数
- print('偏瘦')
- elif 18.5 <= bmi < 22.9: # <3>
- print('正常')
- else: # <4>
- print('偏胖')
- elif height >= 2.5: # <5>如果输入的身高不符合要求则给出提醒
- print('您输入的身高有误,请重新输入!')
- else: # <6>
- print('您输入的体重有误,请重新输入!')
建议将这个程序使用脚本模式运行。输入几组数据,测试运行结果:
- 请输入您的身高(单位:米):1.8
- 请输入您的体重(单位:千克):60
- 正常
- 请输入您的身高(单位:米):1.7
- 请输入您的体重(单位:千克):40
- 偏瘦
- 请输入您的身高(单位:米):3
- 请输入您的体重(单位:千克):66
- 您输入的身高有误,请重新输入!
观察以上程序可以发现, 注释中标号<1> <5> <6>是同一缩进层级,而<2> <3> < 4>是同一缩进层级。
2 if-else三目运算符
有的时候if-else语句会很简短:
- >>> fruit = 'banana'
- >>> if fruit == 'banana':
- ... print('Yes!')
- ... else:
- ... print('No')
- ...
- Yes!
它简短到似乎不是很有必要占用这么多行,Python中的三目运算符可以更方便地完成这个任务:
- >>> fruit = 'banana'
- >>> print('Yes') if fruit == 'banana' else print('No')
- Yes
三目运算符的语法格式如下:
代码块1(如果表达式为真) if 表达式 else 代码块2(如果表达式为假)
三目运算符还可以用来根据不同条件测试,给变量赋不同的值:
- >>> grade = 70
- >>> level = '及格' if grade >= 60 else '不及格'
- >>> level
- '及格'