当前位置: 首页 > news >正文

《人生苦短,我学Python》——条件判断->(if-elif-else)多向选择 条件嵌套

今天,我们来学习多向选择!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 语句的特性:

  1. 如果不满足 if 的条件,就判断是否满足 elif 的条件,满足就执行 elif 内的代码块,不满足就执行 else 内的代码块。

  2. elif 需与 if 搭配使用,它无法独立出现。必须先有 if ,然后才能使用 elif ,否则程序就会报错。
    在这里插入图片描述

  3. if 、elif 与 else 成互斥关系。

  • 互斥关系指的是,程序不会同时执行 if 内、 elif 内和 else 内的代码块,只会执行其中一个
    在这里插入图片描述

3. 对比三种条件判断形式:

现在,我们已经学习了三种判断语句:
if if-elseif-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中的条件判断算是结束了,相信你也是收获满满吧!
在这里插入图片描述

http://www.lryc.cn/news/156260.html

相关文章:

  • MongoDB 数据库性能优化技巧
  • 网络安全人才缺口超百万,如今的就业情况怎样?
  • 「MySQL」MySQL面试题全解析:常见问题与高级技巧详解
  • 【USRP】产品型号、参数、架构全解析系列 6:N320 / N321
  • Apifox 常用 JS 脚本
  • 防止SQL注入的四种方案
  • java单元测试
  • 【LeetCode】双指针求解和为s的两个数字
  • opencv识别一张图片的多个红框,并截取红框的内容
  • 数据库-事务
  • MySQL 使用开源审计插件
  • Python入门教程 | Python3 集合(Set)
  • 视频汇聚/视频云存储/视频监控管理平台EasyCVR安全检查的相关问题及解决方法2.0
  • 【C++模拟实现】反向迭代器的实现
  • Kubernetes技术--k8s核心技术持久化存储
  • 【80天学习完《深入理解计算机系统》】第十四天 复习第三章
  • 库中是如何实现string类的?
  • 无涯教程-JavaScript - WORKDAY.INTL函数
  • STM32--蓝牙
  • java 实现原型模式
  • maven本地安装jar包install-file,解决没有pom的问题
  • 【C++学习笔记】5、变量作用域
  • Python中的装饰器
  • 什么是RESTful API,Spring MVC如何支持RESTful架构
  • cin、cin.getline()、getline()的用法【C++】
  • 单向链表(c/c++)
  • 像linux 一样清理Windows C盘
  • 在Linux 下制作启动盘以及dd命令使用
  • C语言插入排序
  • SQL-DCL