今天,我们来学习多向选择!if--elif--else
if
后的语句是当 if 判断条件成立时,执行的操作。elif
后的语句是当 if 判断不成立时,再判断一次,如果成立,执行的操作。else
后的语句是当以上所有判断条件都不成立时,执行的操作(即把 if 和 elif 判断条件无法囊括的情况全部划分到else这里)
下面就让我们来详细看看吧!
文章目录
- 一、要点先知:
- 二、基础讲解:
- 1. elif:
- 2. if-elif-else 语句的特性:
- 3. 对比三种条件判断形式:
- 三、拓展讲解:
- 1. 条件嵌套:
- 2. 注意事项:
- (1). 语法错误
- (2). 缩进错误
- 四、刷题巩固:
- 1. 简化代码:
- 2. 释放大招:
- 3. 两个较大数的乘积:
一、要点先知:
1️⃣第一种情况,程序运行到 if 判断时,如果条件为真,执行 if 的代码块。
- 完成后,运行 if-elif-else 后面的代码。
2️⃣第二种情况,程序运行到 if 判断时,如果条件为假,程序就直接跳开 if 判断的执行部分,再次运行到 elif 的判断,如果条件为真,执行 elif 的代码块。
- 完成后,运行 if-elif-else 后面的代码。
3️⃣第三种情况,程序运行到 elif 判断时,如果条件为假,程序就直接跳开 elif 判断的执行部分,运行 else 的代码块。
- 完成后,运行 if-elif-else 后面的代码。
二、基础讲解:
1. elif:
一个关键字,是 else 和 if 的缩写。[C语言中写作:if else() ]
- 如果之前的 if 判断条件不成立,就再做一次新的判断,条件成立则执行 elif 后面的代码。
⚠️两个注意点:
- 和 if ,else 一样,elif 语句的最后也需要一个
冒号
。 - elif 内的代码块,还是缩进
四个
空格
2. if-elif-else 语句的特性:
-
如果不满足 if 的条件,就判断是否满足 elif 的条件,满足就执行 elif 内的代码块,不满足就执行 else 内的代码块。
-
elif 需与 if 搭配使用,它
无法独立出现
。必须先有 if ,然后才能使用 elif ,否则程序就会报错。
-
if 、elif 与 else 成
互斥
关系。
- 互斥关系指的是,程序不会同时执行 if 内、 elif 内和 else 内的代码块,只会执行
其中一个
。
3. 对比三种条件判断形式:
现在,我们已经学习了三种判断语句:
if
、if-else
和if-elif-else
- 通过 if 、else 、elif 的搭配使用,我们可以覆盖条件判断中的所有情况,让程序按照我们预定的逻辑来执行很多自动化的工作。
✨if 语句属于单向判断。
- 只要条件成立,就会运行 if 内的代码块;条件不成立,程序就会跳开 if 判断。
✨if-else 语句属于双向判断。
- 如果 if 的条件不成立,就执行 else 内的代码块。
✨if-elif-else 语句属于多向判断(3个或以上的条件)。
- 如果 if 的条件不成立,就执行 elif 再判断一次,如果 elif 的条件也不成立,就执行 else 内的代码块。
并且,当判断的条件超过3个时,中间的多个条件都可以使用 elif ,无论中间有多少个 elif ,它和其他 if 、elif 都是互斥关系,即只会执行其中一个!
三、拓展讲解:
1. 条件嵌套:
之前处理的判断条件都是独立
的,不存在条件之中还有条件
的情况。
但是正如生活的选择题往往没有那么简单一样,在Python中也常会遇到判断条件继续细分的情况。
对于这种在条件成立的基础上又不断细分出其他条件的情况,称为嵌套
。
定义:嵌套是指将一个东西“套在”另一个东西里,就像套娃一样。
同样的,嵌套语句是指将一个语句装在另一个语句里。
- 即在基础条件满足的情况下,再在基础条件里面增加额外的判断条件,即条件里套条件。只有当外层条件成立时,才有可能进入到内层条件当中继续执行。
我们知道,Python是以缩进的空格数来区分代码块的
如果外层条件和内层条件的代码块都采用同样的缩进,Python 就没办法区分内外层条件是如何嵌套的。所以:
-
外层条件
if 语句内的代码块缩进四个空格
。 -
内层(第二层)条件 if语句内的代码块要在
原有缩进的基础上
,再增加
相应的缩进,也就是八个空格。
注意⚠️ :缩进在Python语法规则中扮演重要的角色,千万不能忽视哦~
不仅是 if 嵌套 ,在Python中,if 、if-else 和 if -elif-else 之间也可以相互嵌套。
- 嵌套原则与 if 嵌套类似。
如图所示,这是一段能实现分组和判断成绩的代码。
1个外层条件 if-else 语句判断变量 gender 的值,确定男女分组,2个内层条件 if-else 语句判断变量 score 的值,确定成绩情况。
值得注意的是,虽然使用嵌套可以大大提高代码的逻辑性和层次感。
但是,任何东西都不能过度使用❗️
- 一般来说,超过3层以上的嵌套会使代码变得难以阅读,不符合Python简洁表达的理念。
2. 注意事项:
(1). 语法错误
(1)忘记 if 、elif 、else 后的冒号:
冒号常常被遗漏,这是判断语句的固定格式,有冒号程序才知道下面是谁的代码块。
(2)嵌套时,没有通过缩进来分层:
在每层嵌套条件中需要额外再加四个空格。
第1个else没有缩进,导致第2个 else 找不到对应的 if
(2). 缩进错误
if 、elif 、else 为互斥关系,其内部的代码块需要通过缩进形成。
为了保持风格统一,每个缩进用四个空格。
四、刷题巩固:
1. 简化代码:
使用elif,让代码变得简洁。
初始代码:
myWeight = 80
myHeight = 1.8
BMI = myWeight/(myHeight*myHeight)
if BMI < 18.5:
print("under weight")
else:
if BMI < 23.9:
print("normal weight")
else:
if BMI < 27:
print("over weight")
else:
if BMI <32:
print("fat")
else:
print("obese")
示例代码如下:
myWeight=80
myHeight=1.8
BMI=myWeight/(myHeight*myHeight)
if BMI < 18.5 :
print('under weight')
elif BMI <23.9 :
print("normal weight")
elif BMI <27 :
print("over weight")
elif BMI <32 :
print("fat")
else :
print('obese')
2. 释放大招:
有两个变量 技能状态 skill 和点击状态 click ,分别给它们赋值 110 和 1 。
第一层判断使用 if语句 判断,如果 skill 大于等于100,就输出"大招准备就绪",
同时进入第二层判断,使用 if-else 语句判断,如果 click 等于1,就输出"大招已发送",否则,输出"大招未发送"。
示例代码如下:
skill=110
click=1
if skill>=100 :
print("大招准备就绪")
if click==1 :
print("大招已发送")
else :
print("大招未发送")
3. 两个较大数的乘积:
已知:
a = 135
b = 98
c = 129
在a、b、c中选择两个数字相乘,输出两个数最大的乘积number
示例代码如下:
a=135
b=98
c=129
number=a*b
if number<=a*c :
number=a*c
if number<=b*c :
number=b*c
print(number)
好了,到这里,python中的条件判断算是结束了,相信你也是收获满满吧!