当前位置: 首页 > 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中的条件判断算是结束了,相信你也是收获满满吧!
在这里插入图片描述

相关文章:

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

今天&#xff0c;我们来学习多向选择&#xff01;if--elif--else if 后的语句是当 if 判断条件成立时&#xff0c;执行的操作。elif 后的语句是当 if 判断不成立时&#xff0c;再判断一次&#xff0c;如果成立&#xff0c;执行的操作。else 后的语句是当以上所有判断条件都不成…...

MongoDB 数据库性能优化技巧

原文&#xff1a;MongoDB 数据库性能优化技巧 (techdatafuture.com) MongoDB 是一款灵活且可扩展的NoSQL数据库&#xff0c;为了提高其性能&#xff0c;我们可以采取一些优化技巧。本文将介绍一些MongoDB性能优化的关键点&#xff0c;包括索引的使用、查询优化、数据模型设计和…...

网络安全人才缺口超百万,如今的就业情况怎样?

网络安全人才缺口超百万&#xff0c;如今的就业情况怎样&#xff1f; 2022年9月7日&#xff0c;国家网络安全宣传周准时开始。本次网络安全宣传周和以前一样&#xff0c;主要目的都是为了普及网络安全知识&#xff0c;提高网络安全的防护技能&#xff0c;提升对电信网络诈骗的…...

「MySQL」MySQL面试题全解析:常见问题与高级技巧详解

MySQL面试题全解析&#xff1a;常见问题与高级技巧详解 1. 什么是数据库&#xff1f;2. 什么是MySQL&#xff1f;3. 什么是SQL&#xff1f;4. 什么是主键&#xff1f;5. 什么是外键&#xff1f;6. 请解释索引是什么以及为什么使用索引&#xff1f;7. 什么是事务&#xff1f;8. …...

【USRP】产品型号、参数、架构全解析系列 6:N320 / N321

一、USRP 简介 通用软件无线电外设( USRP ) 是由 Ettus Research 及其母公司National Instruments设计和销售的一系列软件定义无线电。USRP 产品系列由Matt Ettus领导的团队开发&#xff0c;被研究实验室、大学和业余爱好者广泛使用。 大多数 USRP 通过以太网线连接到主机&am…...

Apifox 常用 JS 脚本

前置脚本常用 1、时间戳生成&#xff08;秒级&#xff09;&#xff1a; // 1、生成秒级时间戳到全局变量中 //let timestamp parseInt(new Date().getTime() / 1000) //pm.globals.set(timestamp, timestamp) // 2、生成秒级时间戳到全局变量中 pm.globals.set(timestamp, p…...

防止SQL注入的四种方案

一、什么是SQL注入&#xff1f; SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严&#xff0c;攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句&#xff0c;在管理员不知情的情况下实现非法操作&#xff0c;以此来实现欺骗数据库服…...

java单元测试

版本区别 特性Junit 4Junit 5在当前类的所有测试方法之前执行。注解在静态方法上。此方法可以包含一些初始化代码。BeforeClassBeforeAll在当前类中的所有测试方法之后执行。注解在静态方法上。此方法可以包含一些清理代码。AfterClassAfterAll在每个测试方法之前执行。注解在…...

【LeetCode】双指针求解和为s的两个数字

Problem: 剑指 Offer 57. 和为s的两个数字 文章目录 题目解析算法思路分析复杂度Code 题目解析 首先来讲解一下本题的思路 我们看到本题的意思很简单&#xff0c;就是去这个nums这个数组中进行寻找&#xff0c;如果找到了两个数相加之和为target的话&#xff0c;那构成一个结果…...

opencv识别一张图片的多个红框,并截取红框的内容

需求 需要获取图片的红框的内容&#xff0c;实体的图片我就不放了 获取红框 先截取获得图片的多个轮廓 import cv2 import numpy as np # 加载图像并转换为灰度图像 image cv2.imread(image6.jpg) gray cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 应用高斯模糊以减…...

数据库-事务

介绍&#xff1a; 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事物会把所有的操作作为一个整体一起向系统 提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败 操作&#xff1a;事务控制 开启事务&#xff1a;start…...

MySQL 使用开源审计插件

文章目录 前言1. 审计插件下载2. 审计插件参数2.1 server_audit_events2.2 server_audit_excl_users2.3 server_audit_output_type2.4 server_audit_file_path2.5 server_audit_file_rotate_now2.6 server_audit_file_rotate_size2.7 server_audit_file_rotations2.8 server_au…...

Python入门教程 | Python3 集合(Set)

Python3 集合&#xff08;Set&#xff09; 集合&#xff08;set&#xff09;是一个无序的不重复元素序列。 集合中的元素不会重复&#xff0c;并且可以进行交集、并集、差集等常见的集合操作。 可以使用大括号 { } 创建集合&#xff0c;元素之间用逗号 , 分隔&#xff0c; 或…...

视频汇聚/视频云存储/视频监控管理平台EasyCVR安全检查的相关问题及解决方法2.0

开源EasyDarwin视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中&#xff0c;将分散的各类视频资源进行统一汇聚、整合、集中管理&#xff0c;在视频监控播放上&#xff0c;TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放&#xff0c;可同时播放多…...

【C++模拟实现】反向迭代器的实现

【C模拟实现】反向迭代器的实现 目录 【C模拟实现】反向迭代器的实现反向迭代器的代码示例反向迭代器的模拟实现要点引入iterator模版参数rbegin()和rend()的实现 作者&#xff1a;爱写代码的刚子 时间&#xff1a;2023.9.5 前言&#xff1a;本篇博客主要介绍反向迭代器的实现&…...

Kubernetes技术--k8s核心技术持久化存储

有时候需要在集群中进行一些重要的数据进行持久化存储,然后需要的时候再进行挂载,那么下面我们一起来看看如何实现数据的持久化存储操作。 1.nfs网络存储 -1.找一台服务器做nfs的服务端,安装nfs。(这里我们直接在master上实现)。 这里应该找再单独的搭建一个node节点做持…...

【80天学习完《深入理解计算机系统》】第十四天 复习第三章

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…...

库中是如何实现string类的?

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f…...

无涯教程-JavaScript - WORKDAY.INTL函数

描述 WORKDAY.INTL函数返回带有自定义周末参数的指定工作日数之前或之后的日期的序列号。周末参数指示哪些和多少天是周末。周末和指定为假期的任何日子均不视为工作日。 语法 WORKDAY.INTL (start_date, days, [weekend], [holidays])争论 Argument描述Required/OptionalS…...

STM32--蓝牙

本文主要介绍基于STM32F103C8T6和蓝牙模块实现的交互控制 简介 蓝牙&#xff08;Bluetooth&#xff09;是一种用于无线通信的技术标准&#xff0c;允许设备在短距离内进行数据交换和通信。它是由爱立信&#xff08;Ericsson&#xff09;公司在1994年推出的&#xff0c;以取代…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...