Python入门教程+项目实战-7.1节: 条件控制结构
目录
7.1.1 理解条件控制
7.1.2 if,elif,else
7.1.3 条件表达式
7.1.4 条件控制可以嵌套
7.1.5 if语句的三元运算
7.1.6 系统学习python
7.1.1 理解条件控制
在日常生活中,我们常喜欢说如果, "如果怎么样,那么就会怎么样"。"如果"表达的是一种假设情况,即在假设成立的情况下,会执行某种操作,在假设不成立的情况下,同样会执行某种操作。
例如在以下的“如果”句式中:
如果明天天气晴朗,那么我会去爬莲花山。否则我会去楼下的咖啡店喝一杯咖啡。
在以上句式中提出的假设为:
明天天气晴朗
假设成立时所执行的操作:
爬莲花山
假设不成立时所执行的操作:
喝咖啡
这种以“如果”句式表达的一种逻辑结构,就是一种条件控制。条件控制的核心是先提出一个假设条件,如果条件成立就执行什么样的操作,如果条件不成立,就继续判断其它的条件。在编程语言中,也是通过“如果”来进行条件控制,其对应的关键词是“if”,if的中文释义正是“如果”。
7.1.2 if,elif,else
在Python中通过if, elif,else来进行条件控制。
同学们可以在交互模式中查找if,elif,else关键字的定义及用法。以if进行举例:help("if")。
条件控制的语法结构:
Python
if expression:pass
elif expression:pass
else:pass
if有如果的意思,expression为条件控制结构中的条件表达式,通常可以输出值的都可以作为条件表达式。如果条件表达式的值为真值,那么就执行相应的操作。elif用来表示分支条件,即在if语句中的条件不成立的情况下,继续判断elif语句中的条件是否成立。else表示if语句和elif语句中的条件都不成立的情况下,才执行的操作。
语法结构中的冒号表示一个条件语句块的开始。在条件控制的语法结构中,elif与else不是必须的,可以有多个elif,但最多只有1个else。
非法的条件控制结构:
Python
if expression:pass
elif expression:pass
else:pass
else:pass
在以上非法的条件控制结构中,存在多个else语句。elif语句必须在if语句的后面,else语句必须是控制结构中的最后一个语句。
非法的条件控制结构:
Python
elif expression:pass
if expression:pass
else:pass
elif:pass
在以上非法的条件控制结构中,elif语句必须紧跟在if语句后面,else必须是控制结构中的最后一个语句。存在多个if语句时,Python会将每一个if语句视为一个单独的条件控制结构:
Python
if expression:# 这是一个单独的条件控制结构pass
if expression:# 这是一个单独的条件控制结构pass
elif expression:pass
else:pass
7.1.3 条件表达式
承上,通常可以输出值的都可以作为条件表达式,如果条件表达式的值为真值,那么就执行相应的操作。
代码实例(1):
Python
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
代码实例(2):
Python
x = 1
y = -1
if 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语句中的代码:
Python
print("x+y==0")
最终程序的输出为:
x+y == 0
代码实例(3):
Python
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都为负数?
7.1.4 条件控制可以嵌套
嵌套是指可以在条件语句下面再嵌套条件语句,读者须注意if语句嵌套时的代码缩进。
代码实例:
Python
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都为负数
if嵌套的深度不宜过深,通常保持在三层以内即可。嵌套层数过多会导致代码的可读性变差,难以维护。
7.1.5 if语句的三元运算
三元运算符是软件编程中的一种固定格式,在Python中,通过if语句来实现三元运算符。
三元运算符的语法格式:
expression1 if condition_expression else expression2
三元运算符的执行逻辑为: 如果if语句中的条件表达式condition_expression的值为真,就返回表达式expression1的值,否则返回表达式expression2的值。
使用三元运算符在特定场景下可以简化if语句的使用。
未使用三元运算符的代码实例:
Python
is_happy = 0
if is_happy:feeling = "so happy"
else:feeling = "so unhappy"
使用三目运算符的代码实例:
Python
is_happy = 0
# 用英文引号括住的都为字符串类型
feeling = "so happy" if is_happy else "so unhappy"
这两则代码实例实现的是同样的效果,但使用三目运算符的代码看起来更简洁。在条件分支比较多的情况下,不适合使用三目运算符,读者需根据实际情况来进行合理使用。
7.1.6 系统学习python
薯条老师简介:资深技术专家,技术作家,著有《Python零基础入门指南》,《Java零基础入门指南》等技术教程。薯条老师的博客:http://www.chipscoco.com, 系统学习后端,爬虫,数据分析,机器学习
相关文章:
Python入门教程+项目实战-7.1节: 条件控制结构
目录 7.1.1 理解条件控制 7.1.2 if,elif,else 7.1.3 条件表达式 7.1.4 条件控制可以嵌套 7.1.5 if语句的三元运算 7.1.6 系统学习python 7.1.1 理解条件控制 在日常生活中,我们常喜欢说如果, "如果怎么样,那么就会怎么样"。"如果&…...

【机器学习】P4 特征缩放与学习率
这里写自定义目录标题特征缩放标准化归一化平均值归一化收敛学习率特征缩放 特征缩放(Feature scaling)是一种数据预处理技术,它用于将不同尺度的特征值缩放到相同的范围内,以便更好地应用于机器学习算法中。在不进行特征缩放的情…...

《Python编程:从入门到实战》(第2版)学习笔记 第11章 测试代码
【写在前面】为进一步提高自己的python代码能力,打算把几本经典书籍重新过一遍,形成系统的知识体系,同时适当记录一些学习笔记,我尽量及时更新!先从经典的《Python编程:从入门到实战》书籍开始吧。有问题欢…...

SpringBoot(1)基础入门
SpringBoot基础入门SpringBoot项目创建方式Idea创建SpringBoot官网创建基于阿里云创建项目手工搭建SpringBoot启动parentstarter引导类内嵌tomcat基础配置属性配置配置文件分类yaml文件yaml数据读取整合第三方技术整合JUnit整合MyBatis整合Mybatis-Plus整合DruidSpringBoot是由…...

利用Flow Simulation快速经济高效地解决传热难题
几乎一切事物都会经历某种程度的发热或冷却,而且对于许多产品来说,热管理已成为避免过度发热和实现功能正常运行的一个关键要求。能够有效解决传热问题的制造商将会在竞争中占有明显的优势。利用一个简单易用的流体分析应用程序 SOLIDWORKS Flow Simulat…...

揭开二维码背后的神秘面纱用二维码识别 API 就够了
写在前面 二维码(QR code)已经成为现代生活中不可或缺的一部分。二维码具有可靠性、快速识别、易于存储等优点,因此在广泛应用于支付、门票、社交网络、广告等方面。但是,对于大多数人来说,二维码背后的编码方式是完全…...

系统分析——系统构建最重要的一环
🌟所属专栏:信息系统分析与设计 🐔作者简介:rchjr——五带信管菜只因一枚 😮前言:该系列将持续更新信息系统分析与设计课程的相关学习笔记,欢迎和我一样的小白订阅,一起学习共同进步…...
第1-第20个高级shell程序
高级shell脚本 1.使用Shell脚本批量修改文件名 #!/bin/bash for fi lein$(ls*.txt) do mv $file${file%%.*}.md done2.统计一个文本文件中某个单词出现的次数 #!/bin/bashword"example" count0 whilereadline do forwin$line do if["$w""$word&qu…...
【致敬嵌入式攻城狮第2期活动预热征文】学习安排
文章目录「 致敬未来的攻城狮计划 」——学习计划前言学习计划🚗单片机理论实践🚗学业阅读计划「 致敬未来的攻城狮计划 」——学习计划 🚀🚀开启攻城狮的成长之旅!这是我参与的由 CSDN博客专家 架构师李肯和 瑞萨MCU …...

035:cesium加载KML文件,显示图形
第035个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中加载KML文件, 显示图形。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共83行)相关API参考:专栏目标示例效果 配置方式 1)查看基础设置:https:/…...

随想录Day42--动态规划: 416. 分割等和子集(终于吃下01背包了)
今天只有1道题,属于动态规划的01背包问题的应用。首先理解一下动态规划的01背包问题。推荐一个视频,动态规划DP0-1背包,这是我认为讲得最为通透的。很多讲解动态背包问题的,一上来就画二维表格,遍历背包或者遍历容量&a…...

字节跳动软件测试岗,前两面过了,第三面被面试官吊打,结局我哭了
阎王易见,小鬼难缠。我一直相信这个世界上好人居多,但是也没想到自己也会在阴沟里翻船。我感觉自己被字节跳动的HR坑了。 在这里,我只想告诫大家,offer一定要拿到自己的手里才是真的,口头offer都是不牢靠的࿰…...
bitlocker 笔记
介绍 bitlocker是windows自带的磁盘加密工具,win10专业版是可以使用的,其他家庭版本可能没有这个功能。有点类似与wd security。 功能 加密磁盘,当磁盘物理丢失时,防止磁盘中的数据泄露。举个例子,移动硬盘被偷&…...
Linux 压缩与解压命令
一、常见的压缩文件扩展名 1、*.Z compress程序压缩的文件 2、*.gz gzip程序压缩的文件 3、.tar.gz tar程序打包的文件,其中经过gzip的压缩 4、.tar tar程序打包的数据,并没有压缩过 5、.bz2 bzip2程序压缩的文件 6、.tar.bz2 tar程序打包的文件&a…...

python global函数用法及常用的 global函数代码
Python中的 global函数是用于在程序中定义变量的函数,在我们实际的开发中,我们可能会用到 global函数来定义变量,但是我们在这里就不具体介绍它的用法了。 global函数定义变量的方法: global函数使用参数a来指定变量在程序中的地址…...

大数据学完好就业么
Python的普及与数据挖掘、人工智能和数值计算等领域的蓬勃发展相关,但同时也与普遍编程需求的增加有关。 Python应用领域广泛,意味着选择Python的同学在学成之后可选择的就业领域有很多,加上Python本身的优势,致使现在越来越多的…...

CASAtomic 原子操作详解
文章目录CAS&Atomic 原子操作详解什么是原子操作CAS相关原子操作类的使用AtomicIntegerAtomicIntegerArray更新引用类型原子更新字段类LongAdderCAS&Atomic 原子操作详解 什么是原子操作 Mysql事务中的原子性就是一个事务中执行的多条sql,要么同时成功&am…...

卷积神经网络(convolutional neural network, CNN)
卷积神经网络(convolutional neural network, CNN) 卷积神经网络(convolutional neural network, CNN),是一种专门用来处理具有类似网格结构的数据的神经网络。卷积网络是指那些至少在网络的一层中使用卷积运算来替代…...

kube-apiserver启动流程源码分析
1. 概述 KubeAPIServer 主要是提供对 API Resource 的操作请求,为 kubernetes 中众多 API 注册路由信息,暴露 RESTful API 并且对外提供 kubernetes service,使集群中以及集群外的服务都可以通过 RESTful API 操作 kubernetes 中的资源。 2…...

Scala基础(二)
单例对象(object) Scala的类中无法定义静态成员,即无static关键字。如何像Java一样表达类的静态成员变量、成员方法与静态代码块? Scala解决方案:单例对象 使用“object”关键字声明,可包含变量、方法与…...

visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

aardio 自动识别验证码输入
技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”,于是尝试整合图像识别与网页自动化技术,完成了这套模拟登录流程。核心思路是:截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...

Tauri2学习笔记
教程地址:https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引:https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多,我按照Tauri1的教程来学习&…...

多模态大语言模型arxiv论文略读(110)
CoVLA: Comprehensive Vision-Language-Action Dataset for Autonomous Driving ➡️ 论文标题:CoVLA: Comprehensive Vision-Language-Action Dataset for Autonomous Driving ➡️ 论文作者:Hidehisa Arai, Keita Miwa, Kento Sasaki, Yu Yamaguchi, …...
Spring Boot SQL数据库功能详解
Spring Boot自动配置与数据源管理 数据源自动配置机制 当在Spring Boot项目中添加数据库驱动依赖(如org.postgresql:postgresql)后,应用启动时自动配置系统会尝试创建DataSource实现。开发者只需提供基础连接信息: 数据库URL格…...

暴雨新专利解决服务器噪音与性能悖论
6月1日,我国首部数据中心绿色化评价方面国家标准《绿色数据中心评价》正式实施,为我国数据中心的绿色低碳建设提供了明确指引。《评价》首次将噪音控制纳入国家级绿色评价体系,要求从设计隔声结构到运维定期监测实现闭环管控,加速…...

Linux——TCP和UDP
一、TCP协议 1.特点 TCP提供的是面向连接、可靠的、字节流服务。 2.编程流程 (1)服务器端的编程流程 ①socket() 方法创建套接字 ②bind()方法指定套接字使用的IP地址和端口。 ③listen()方法用来创建监听队列。 ④accept()方法处理客户端的连接…...