- Python语言程序设计
- 石毅 张莉 高建华主编
- 972字
- 2025-02-25 07:01:59
3.3 条件语句嵌套
3.3.1 if语句嵌套
if语句嵌套指的是if语句内部包含if语句,其格式如下:

在上述if语句嵌套的格式中,先判断外层if语句中条件表达式1的结果是否为True,如果结果为True,则执行代码块1,再判断内层if的条件表达式2的结果是否为True,如果条件表达式2的结果为True,则执行代码块2。
针对if嵌套语句,有两点需要说明:
(1)if语句可以多层嵌套,不仅限于两层。
(2)外层和内层的if判断都可以使用if语句、if…else语句和elif语句。
在现实世界中,很多情况下需要考虑嵌套条件情况。例如,来看一个学校举行运动会比赛,百米赛跑成绩在10秒以内的学生有资格进入决赛,根据性别分为男子组和女子组。首先,要判断是否能够进入决赛,在确定进入决赛的情况下,再判断是进入男子组,还是进入女子组。这就需要使用嵌套if选择结构来解决。
嵌套if选择结构就是在if选择结构里面再嵌入if选择结构,它的流程图如图3-5所示。

图3-5 嵌套if选择结构的流程图
现在我们就使用嵌套if选择结构解决这个问题,代码如示例9所示。
【示例9】 嵌套if选择语句

只有当满足外层if选择结构的条件时,才会判断内层if的条件。else总是与它前面最近的那个缺少else的if配对。运行代码,控制台输出结果如下:

说明
if结构书写规范如下。
➢ 为了使if结构更加清晰,内层的if结构相对于外层的if结构要有一定的缩进。
➢ 相匹配的一对if和else应该左对齐。
3.3.2 技能训练
上机练习5根据年份和月份计算当月天数
需求说明
根据年份和月份计算当月一共有多少天。
上机练习4模拟乘客进站流程
需求说明
火车和地铁极大地方便了人们的出行,但为了防范不法分子,保障民众安全,进站乘坐火车或者乘坐地铁之前,需要先接受安检。部分车站先验票后安检,亦有车站先安检后验票。以先验票后安检的车站为例,乘客的进站流程如下。
(1)验票:检查乘客是否购买了车票
➢ 如果没有车票,不允许进站;
➢ 如果有车票,对行李进行安检。
(2)行李安检:检查是否携带危险物品
➢ 如果携带危险物品,提示不允许上车;
➢ 如果未携带危险物品,顺利进站。
编写程序,模拟乘客进站流程。
上机练习6快递计费系统
需求说明
快递行业的高速发展,使人们邮寄物品变得方便快捷。某快递点提供华东地区、华南地区、华北地区的寄件服务,其中华东地区编号为01、华南地区编号为02、华北地区编号为03。该快递点寄件价目表具体如表3-4所示。
表3-4 寄件价目表

根据表3-4提供的数据编写程序,实现快递计费功能。