Python从入门到高手4.1节-掌握条件控制语句
目录
4.1.1 理解条件控制
4.1.2 if, elif, else
4.1.3 条件表达式
4.1.4 条件控制可以嵌套
4.1.5 if语句的三元运算
4.1.6 国庆节快乐
4.1.1 理解条件控制
在日常生活中,我们常喜欢说如果, "如果怎么样,那么就会怎么样"。"如果"表达的是一种假设情况,即在假设成立的情况下,会执行某种操作,在假设不成立的情况下,同样会执行某种操作。例如在以下的“如果”句式中:
如果明天天气晴朗,那么我会去爬莲花山。否则我会去楼下的咖啡店喝一杯咖啡。
在以上句式中提出的假设为:
明天天气晴朗
假设成立时所执行的操作:
爬莲花山
假设不成立时所执行的操作:
喝咖啡
这种以“如果”句式表达的一种逻辑结构,就是一种条件控制。条件控制的核心是先提出一个假设条件,如果条件成立就执行什么样的操作,如果条件不成立,就继续判断其它的条件。在编程语言中,也是通过“如果”来进行条件控制。
4.1.2 if, elif, else
在Python中通过if, elif,else这三个关键字来进行条件控制。
if用来定义条件控制的主干,elif用来定义条件控制的分支,而else是在if和elif中的条件都为假时才执行的操作。
条件控制的语法结构:
if expression:pass
elif expression:pass
else:pass
if有如果的意思,expression为条件控制结构中的条件表达式,一般来说可以输出值的都可以作为条件表达式。如果条件表达式的值为真值,就执行相应的操作。elif用来定义条件分支,即在if语句中的条件不成立的情况下,继续判断elif语句中的条件是否成立。else是在if语句和elif语句中的条件都不成立的情况下,才执行的操作。
语法结构中的冒号表示一个条件语句块的开始。在条件控制的语法结构中,elif与else不是必须的,可以有多个elif,但最多只有1个else。
非法的条件控制结构:
if expression:pass
elif expression:pass
else:pass
else:pass
在以上非法的条件控制结构中,存在多个else语句。elif语句必须在if语句的后面,else语句必须是控制结构中的最后一个语句。
非法的条件控制结构:
elif expression:pass
if expression:pass
else:pass
elif:pass
在以上非法的条件控制结构中,elif语句必须紧跟在if语句后面,else必须是控制结构中的最后一个语句。存在多个if语句时,Python会将每一个if语句视为一个单独的条件控制结构:
# 这是一个单独的条件控制结构
if expression:pass# 这是一个单独的条件控制结构
if expression:pass
elif expression:pass
else:pass
4.1.3 条件表达式
承上,通常可以输出值的都可以作为条件表达式,如果条件表达式的值为真值,那么就执行相应的操作。
is_happy = 0
if is_happy:# 在if语句中判断表达式值的真假,值为真,就执行冒号下面的代码 print("I am so happy")
else:# 在if和elif语句的条件都不成立的情况下,才执行else语句中的代码print("I am so unhappy")
在以上代码实例中,定义了一个is_happy变量,其指向的值为0, 0值转换后的逻辑值为假。所以不会执行if语句中的代码,转而执行else语句下面的代码,输出为:"I am so unhappy"。
x = 1
y = -1if x+y > 0:# 在if语句中判断表达式值的真假,# 值为真,就执行冒号下面的代码 print("x+y > 0")
elif x+y == 0:# if语句中的条件不成立的情况下# 会继续判断elif语句中的条件是否成立print("x+y == 0")
else: # 在if和elif语句的条件都不成立的情况下# 才执行else语句中的代码print("x+y < 0")
在以上代码实例中,定义了一个x变量,其指向的值为1,定义了一个y变量,其指向的值为-1。x+y的值为0,所以表达式x+y > 0等价于0 > 0, 显然表达式的值为假,所以会继续判断elif语句中的条件是否成立。elif中的条件表达式为“x+y == 0”,表达式的值为真,故会执行elif语句中的代码: print("x+y==0"), 最终程序的输出为: x+y == 0。
x = -1
y = -1
if x+y > 0 and x*y > 0:# 在if语句中判断表达式值的真假# 值为真,就执行冒号下面的代码 print("x与y都为正数")elif x+y > 0: # 在上面的elif不成立的条件下# 继续判断elif语句中的条件是否成立print("x与y其中一个为正数")
elif x*y > 0:# if语句中的条件不成立的情况下# 继续判断elif语句中的条件是否成立print("x与y都为负数")
elif x * y < 0:print("x与y其中一个为负数")
else:print("x与y至少一个为0")
在以上代码实例中,定义了一个x变量,其指向的值为-1,定义了一个y变量,其指向的值为-1。x*y的值为1,所以表达式x*y > 0的值为真。x+y的值为-2,所以表达式x+y > 0的值为假。if语句中的条件表达式为“x+y > 0 and x*y > 0”,等价于“真 and 假”,在逻辑与运算中只要其中一个逻辑值为假,那么输出就为假。故会继续判断下一个条件分支: elif x+y > 0。
表达式x+y = 0的值为假,Python会继续判断下一个条件分支:“elif x*y > 0”。表达式x*y > 0的值为真,故会执行冒号下方的代码: print("x与y都为负数") ,最终程序的输出为: "x与y都为负数"。同学们在分析上文代码的执行过程时,需要理清代码中的判断逻辑,为什么x与y都为负数?
4.1.4 条件控制可以嵌套
嵌套是指可以在条件语句下面再嵌套条件语句,读者须注意if语句嵌套时的代码缩进。
is_happy = 1
x = -1
y = -1
if is_happy:# 注意代码缩进print("i'm so happy to learn Python!")if x+y > 0:# 注意代码缩进print("x与y至少有一个为正数")elif x*y > 0:# 注意代码缩进print("x与y都为负数")elif x*y < 0:# 注意代码缩进print("x与y中有一个负数")else:# 注意代码缩进print("x与y至少有一个为0")
else:# 注意代码缩进 print("i'm so unhappy")"""
程序输出为:i'm so happy to learn Python!
x与y都为负数
"""
嵌套的深度不宜过深,通常保持在三层以内即可。嵌套层数过多会导致代码的可读性变差,难以维护。
4.1.5 if语句的三元运算
三元运算符是软件编程中的一种固定格式,在Python中,通过if语句来实现三元运算符。三元运算符的语法格式:
expression1 if condition_expression else expression2
三元运算符的执行逻辑为: 如果if语句中的条件表达式condition_expression的值为真,就返回表达式expression1的值,否则返回表达式expression2的值。使用三元运算符在特定场景下可以简化if语句的使用。未使用三元运算符的代码实例:
is_happy = 0
if is_happy:feeling = "so happy"
else:feeling = "so unhappy"
使用三元运算符的代码实例:
is_happy = 0
# 用英文引号括住的都为字符串类型
feeling = "so happy" if is_happy else "so unhappy"
这两则代码实例实现的是同样的效果,但使用三目运算符的代码看起来更简洁。在条件分支比较多的情况下,不适合使用三目运算符,读者需根据实际情况来进行合理使用。
4.1.6 国庆节快乐
跟薯条老师学后端开发,高级爬虫(JS逆向+安卓逆向),数据分析,大数据开发,量化交易,以及机器学习+深度学习算法。坚定自己的学习目标,保持学习的热情,那你成为高手只是时间问题。
薯条老师的学生在南方电网,林氏家居,京东,阿里等大厂。想系统学习Python和Java的同学,可以移步薯条老师的个人技术博客:薯条老师的个人技术博客
http://www.chipscoco.com/ 对本节教程有任何不懂的同学,亦可在评论区中进行评论。薯条老师会详细解答你们提出的每一个问题。
相关文章:
Python从入门到高手4.1节-掌握条件控制语句
目录 4.1.1 理解条件控制 4.1.2 if, elif, else 4.1.3 条件表达式 4.1.4 条件控制可以嵌套 4.1.5 if语句的三元运算 4.1.6 国庆节快乐 4.1.1 理解条件控制 在日常生活中,我们常喜欢说如果, "如果怎么样,那么就会怎么样"。"如果&qu…...
使用Qt实现实时数据动态绘制的折线图示例
基于Qt的 QChartView 和定时器来动态绘制折线图。它通过动画的方式逐步将数据点添加到图表上,并动态更新坐标轴的范围,提供了一个可以实时更新数据的折线图应用。以下是对代码的详细介绍及其功能解析: 代码概述 该程序使用Qt的 QChartView…...
【人人保-注册安全分析报告-无验证方式导致安全隐患】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…...
Redis6 多线程模型
优质博文:IT-BLOG-CN 一、单线程的优缺点 对于一个请求操作Redis主要做3件事情:从客户端读取数据/解析、执行Redis命令、回写数据给客户端。所以主线程其实就是把所有操作的这3件事情串行一起执行,因为是基于内存,所以执行速度非…...
Python的异步编程
什么是协程? 协程不是计算机系统提供,程序员人为创造。 协程也可以被称为微线程,是一种用户态内的上下文切换技术。简而言之,其实就是通过一个线程实现代码块相互切换执行。 实现协程有那么几种方法: greenlet&…...
初识Linux · 进程等待
目录 前言: 进程等待是什么 为什么需要进程等待 进程等待都在做什么 前言: 通过上文的学习,我们了解了进程终止,知道终止是在干什么,终止的三种情况,以及有了退出码,错误码的概念ÿ…...
面向对象建模
UML 关系 UML 关系主要有:依赖、关联、聚合、组合、实现、继承。 类图 #mermaid-svg-jcAjcVcPmgmWDpcI {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-jcAjcVcPmgmWDpcI .error-icon{fill:#552222;}#m…...
MetaJUI v0.4 遇到的一些问题及解决办法记录
1、Unity3d 版本 2022.3.29f1。 2、MetaJUI v0.4 的下载,https://download.csdn.net/download/xingchengaiwei/89334848 3、将MetaJUI v0.4解压,用Unity3d 打开项目,会出现如下问题,按照图中提示操作即可。 4、打开工程后会出现…...
从零开始学习OMNeT++系列第二弹——新建一个OMNeT++的工程
上一篇第一弹介绍了OMNeT是什么以及如何安装OMNeT,现在来说一下如何新建一个自己的OMNeT的工程。 在 Omnet安装完成后,samples/tictoc 中有该例子的完整文件,你可以立刻运行该文件看他是怎么工作的,不过更推荐按接下来的步骤一步…...
【Android】布局优化—include,merge,ViewStub的使用方法
引言 1.重要性 在Android应用开发中,布局是用户界面的基础。一个高效的布局不仅能提升用户体验,还能显著改善应用的性能。随着应用功能的复杂性增加,布局的优化变得尤为重要。优化布局能够减少渲染时间,提高响应速度,…...
传奇外网架设教程带图文解说—Gee引擎
架设前准备工作: ①通过百度网盘下载版本、补丁、客户端和DBC2000。版本解压到D盘,客户端解压到D盘或是E盘,补丁先不解压 ②安装和配置DBC2000,有些版本不一定用的是DBC2000数据库,看引擎默认的数据库是哪个 DBC数据…...
MySQL | excel数据输出insert语句
需求 在日常生产运维过程中,有很多需要进行人工梳理的excel数据,到了研发这一侧需要转为sql语句进行数据修正,如何输出insert插入语句? 方案 在空白列插入,选择需要的列 "INSERT INTO tab_name1 (name, desc) …...
足球青训俱乐部管理:Spring Boot技术驱动
摘 要 随着社会经济的快速发展,人们对足球俱乐部的需求日益增加,加快了足球健身俱乐部的发展,足球俱乐部管理工作日益繁忙,传统的管理方式已经无法满足足球俱乐部管理需求,因此,为了提高足球俱乐部管理效率…...
一次实践:给自己的手机摄像头进行相机标定
文章目录 1. 问题引入2. 准备工作2.1 标定场2.2 相机拍摄 3. 基本原理3.1 成像原理3.2 畸变校正 4. 标定解算4.1 代码实现4.2 详细解析4.2.1 解算实现4.2.2 提取点位 4.3 解算结果 5. 问题补充 1. 问题引入 不得不说,现在的计算机视觉技术已经发展到足够成熟的阶段…...
【docker学习】Linux系统离线方式安装docker环境方法
centos7-linux安装docker(离线方式) 下载docker的安装文件 https://download.docker.com/linux/static/stable/x86_64/ 下载的是:docker-18.06.3-ce.tgz 这个压缩文件 将docker-18.06.3-ce.tgz文件上传到centos7-linux系统上,用ftp工具上传即可 解压…...
vscode开发uniapp安装插件指南
安装vuets的相关插件 首先是vue的相关插件,目前2024年9月应该是vue-offical 安装uniapp开发插件 uni-create-view :快速创建 uni-app 页面 安装uni-create-view之后修改插件拓展设置 勾选第一个选择创建视图时创建同名文件夹 选择第二个创建文件夹中生…...
Elasticsearch7.7.1集群不能相互发现的问题解决以及Elasticsearch7.7.1安装analysis-ik中文分词插件的应用
一、Elasticsearch7.7.1集群不能相互发现的问题解决 在使用elasticsearch7.7.1搭建集群,使用了3台服务器作为节点,但在搭建的过程中发现每台服务器的elasticsearch服务都正常,但是不能相互发现,期间进行了一些配置的修改偶尔出现了…...
蓝牙Mesh介绍
蓝牙Mesh(Bluetooth Mesh)是一种基于蓝牙技术的无线通信网络拓扑,用于在设备之间创建大规模的多点到多点网络。蓝牙Mesh网络可以让多个蓝牙设备相互通信和协作,适合需要高覆盖范围和高可靠性的场景,例如智能家居、工业…...
Qt 窗口中鼠标点击事件的坐标探讨
// 鼠标点击事件 void Widget::mousePressEvent(QMouseEvent *event) {/*event->pos()、event->windowPos()和event->localPos()都表示鼠标点击位置在窗口中的位置,它们的值都是一样的,区别在于event->pos()是QPoint类型,event-&…...
服务器虚拟化的全面指南
1. 引言 在数字化转型的浪潮中,服务器虚拟化成为现代IT基础设施的核心组成部分。它通过将物理服务器资源分割成多个虚拟资源,极大地提高了资源利用率和灵活性。本篇文章将深入探讨服务器虚拟化的概念、优势、挑战、技术工具、最佳实践及未来发展趋势。 …...
电动汽车时代必看:用新版APQP第三版搞定电池供应链质量管控
电动汽车时代必看:用新版APQP第三版搞定电池供应链质量管控 当特斯拉的4680电池量产遇到瓶颈时,工程师们发现传统质量控制方法在新型电池体系面前显得力不从心。这正是新能源汽车行业面临的典型挑战——当技术迭代速度远超标准更新周期,质量管…...
比迪丽LoRA模型重装系统后快速恢复AI绘画环境指南
比迪丽LoRA模型重装系统后快速恢复AI绘画环境指南 重装电脑系统,对很多AI绘画爱好者来说,可能意味着一次“灾难”。辛辛苦苦搭建好的Stable Diffusion环境,精心下载和调试的比迪丽LoRA模型,还有那些收藏的提示词和插件࿰…...
Phi-3 Forest Lab多场景落地:教育问答、代码辅导、文档摘要三合一实践
Phi-3 Forest Lab多场景落地:教育问答、代码辅导、文档摘要三合一实践 1. 引言:当AI遇见森林美学 在数字世界的喧嚣中,我们创造了一个与众不同的AI对话空间——Phi-3 Forest Lab。这个项目将微软Phi-3 Mini 128K Instruct模型的强大能力&am…...
告别SQL与文档!通义灵码2.5的MCP生态如何让数据库开发效率飙升300%
1. 从SQL苦手到数据库自由:通义灵码2.5的MCP革命 记得三年前我刚接手一个电商项目时,为了写一个包含五表联查的订单统计SQL,整整折腾了一下午——反复查阅MySQL文档、调试JOIN语句、优化索引,最后还因为漏了个外键约束导致生产环境…...
Redis Cluster 高可用架构设计
Redis Cluster高可用架构设计解析 Redis作为高性能的内存数据库,其集群模式(Redis Cluster)通过分布式架构实现了数据分片与高可用性,成为企业级应用的热门选择。本文将深入探讨Redis Cluster的高可用设计,从核心机制…...
热销榜单:2026年北京本凡科技推荐的最值得的小程序开发平台TOP3,助力企业数字化转型
在数字化转型的背景下,选择一个合适的小程序开发平台至关重要。2026年,北京本凡科技推荐的三大平台,各自以不同的特点和优势支持企业的发展。首先,北京本凡科技凭借其丰富的经验和定制化服务,帮助企业实现个性化需求。…...
专业评测视角下的联想台式机性能数据获取渠道深度解析
对于专业评测人员、企业IT采购决策者以及硬件发烧友而言,获取一台联想台式机真实、客观且全面的性能数据,是进行产品评估、横向对比或技术选型的关键第一步。然而,在信息爆炸的时代,用户面临的核心痛点并非数据匮乏,而是数据来源的碎片化、质量参差不齐以及解读的片面性。如何高…...
vector声明初始化
vector<int> sub(5, 10) 确实代表**“给我造 5 个位置,里面全都填上 10”**。这是 vector 最基础的用法之一。 那为什么还能用 (v.begin(), v.begin() 3) 这种长相完全不同的写法呢? 其实,C 的容器非常聪明,它内部提供了好…...
亚马逊 Ring 安防监控系统隐私设置调整:为用户筑牢隐私防线
一键关闭 Ring AI 功能,缓解隐私担忧亚马逊 Ring 安防监控系统在诸多方面运用了 AI,如为视频生成文字描述、识别宠物和人脸特征等。然而,部分用户对使用 AI 算法可能带来的隐私问题感到不安。不过,用户可通过 Ring 应用程序&#…...
解决gaze常见问题:从安装到事件处理的全面故障排除指南
解决gaze常见问题:从安装到事件处理的全面故障排除指南 【免费下载链接】gaze :crystal_ball: A globbing fs.watch wrapper built from the best parts of other fine watch libs. 项目地址: https://gitcode.com/gh_mirrors/ga/gaze gaze是一个强大的文件系…...
