1. if...elif...elif...else语句

对于一个问题处于多种选择的状态下,也可以理解为判断条件有多个值的时候,if...else就不能满足我们的需求,这时候我们就要借用elif来解决问题。

elif是等同于else+if,它的使用可以帮助我们简化代码,不至于是使用过多的if...else语句。它的形式为:

 if 表达式1:
     条件语句1
 elif 表达式2:
     条件语句2
 elif 表达式3:
     条件语句3
 else:
     条件语句4

我们看一下它的执行流程图。

选择结构3

这种形式就是当第一种情况不满足的时候会进行第二种情况的判断,如果仍然不满足会进行第三种情况的判断,如果还不满足就直接False处理。

我们来通过一个问题来分析:

我们在旅游的时候总是离不开交通工具的选择。

1)我们可以首先进行判断高铁是否可以到达,如果满足就可以直接选择乘坐高铁。

2)如果不满足上条件可以判断是否可以乘坐火车到达,如果满足就可以选择乘坐火车。

3)如果不满足上条件可以判断是否可以乘坐飞机到达,如果满足就可以选择乘坐飞机,如果不能到达我们可以最后放弃出行或者更换旅游地点。

4)可以通过这个实例对应上流程图理解一下。

下面我们通过另外一个实例来再次学习:

关于体质指标如下:

体质指数(BMI)=体重(kg)÷身高*身高(m)
成人的BMI数值:
过轻:低于18.5
正常:18.5-23.9
过重:24-27
肥胖:28-32
严重肥胖, 高于32

我们可以通过一个人的体重和身高来判断他的体质指数是否合格。

代码如下:

height = float(input('Height(m):'))#输入身高
weight = float(input('Weight(kg):'))#输入体重
BMI = (weight) / ((height) ** 2)#BMI计算公式
if BMI < 18.5:
    print('过轻')
elif BMI <= 25:
    print('正常')
elif BMI <= 28:
    print('过重')
elif BMI <= 32:
    print('肥胖')
else:
    print('严重肥胖')

通过这个问题想必大家已经理解了elif的用法,在我们要分类讨论一个问题的时候使用这种方式可以更清晰的分析理解。

2. if语句的嵌套

关于if语句的嵌套,就是指满足一个if语句之后,在它的条件语句里再进行一个if语句的判断,这种形式的嵌套形式在筛选数据或者条件过滤的时候常用到。

它的形式为:

if 表达式1:
     if 表达式2:
         if 表达式3:
             条件语句3
         条件语句2
     条件语句1
 else:
     条件语句4

它对应的流程图:

选择结构4

不知道大家有没有试过使用程序去判断一个年份是不是闰年,下面我们来通过这样一个问题来了解一下if语句的嵌套。

代码如下:

year = int(input("输入一个年份: "))
if (year % 4) == 0:
    if (year % 100) == 0:
        if (year % 400) == 0:
            print(year,"是闰年")  # 是整百年但能被400整除的
        else:
            print(year,"不是闰年")
    else:
        print(year, "是闰年")  # 不是整百年但能被4整除的
else:
    print(year,"不是闰年")

输出结构:

输入一个年份: 2000
2000 是闰年
输入一个年份: 1999
1999 不是闰年

这个问题的解决就是通过条件语句的嵌套来筛选得到答案,具体看一下嵌套形式以及缩进格式。当年份满足能整除4这一条件的时候可以进行第一次筛选,当年份能被4整除的同时还能被100整除的时候可以进行第二次筛选,当年份既能被4整除也能被100整除还能被400整除的时候进行第三次筛选,从而得到最终的判断。

3. 推荐习题

100210051007100810101480


点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)