Python从入门到高手4.1节-掌握条件控制语句

devtools/2024/10/18 9:20:43/

目录

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中的条件都为假时才执行的操作。

条件控制的语法结构:

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

4.1.3 条件表达式

承上,通常可以输出值的都可以作为条件表达式,如果条件表达式的值为真值,那么就执行相应的操作。

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"。

python">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。

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都为负数?

4.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都为负数
"""

嵌套的深度不宜过深,通常保持在三层以内即可。嵌套层数过多会导致代码的可读性变差,难以维护。

4.1.5 if语句的三元运算

三元运算符是软件编程中的一种固定格式,在Python中,通过if语句来实现三元运算符。三元运算符的语法格式:

python">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"

这两则代码实例实现的是同样的效果,但使用三目运算符的代码看起来更简洁。在条件分支比较多的情况下,不适合使用三目运算符,读者需根据实际情况来进行合理使用。

4.1.6 国庆节快乐

跟薯条老师学后端开发,高级爬虫(JS逆向+安卓逆向),数据分析,大数据开发,量化交易,以及机器学习+深度学习算法。坚定自己的学习目标,保持学习的热情,那你成为高手只是时间问题。

薯条老师的学生在南方电网,林氏家居,京东,阿里等大厂。想系统学习Python和Java的同学,可以移步薯条老师的个人技术博客:薯条老师的个人技术博客icon-default.png?t=O83Ahttp://www.chipscoco.com/ 对本节教程有任何不懂的同学,亦可在评论区中进行评论。薯条老师会详细解答你们提出的每一个问题。


http://www.ppmy.cn/devtools/119586.html

相关文章

基于单片机的催眠电路控制系统

** 文章目录 前言一 概要功能设计设计思路 软件设计效果图 程序文章目录 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主…

如何给一张图像判断失真类型?

判断失真类型 类型 类型 模糊失真&#xff1a; 表现&#xff1a;图像细节不清晰&#xff0c;边缘模糊&#xff0c;整体看起来像是被一层薄雾笼罩。 原因&#xff1a;可能是由对焦不准确、相机抖动、快门速度过慢或景深过浅等原因造成。 判断方法&#xff1a;观察图像中的细节是…

小川科技携手阿里云数据库MongoDB:数据赋能企业构建年轻娱乐生态

随着信息技术的飞速发展&#xff0c;企业在处理海量数据时所面临的挑战日益严峻。特别是在年轻娱乐领域&#xff0c;用户行为的多样性和数据量的激增对数据存储与分析技术提出了更高的要求。在此背景下&#xff0c;小川凭借其前瞻性的技术视野&#xff0c;选择了MongoDB作为其数…

互斥量mutex、锁、条件变量和信号量相关原语(函数)----很全

线程相关知识可以看这里: 线程控制原语(函数)的介绍-CSDN博客 进程组、会话、守护进程和线程的概念-CSDN博客 1.同步概念 所谓同步&#xff0c;即同时起步&#xff0c;协调一致。不同的对象&#xff0c;对“同步”的理解方式略有不同。如&#xff0c;设备同步&#xff0c;是…

(23)mysql中mysqldump备份数据库

mysql中mysqldump备份数据库: 1.mysqldump -uroot -p123456 --databases test > test.sql ## 将输出写入test.sql文件 " -u  用户名 -p  密码 -h  hostname 信息 -d&#xff08;--no-data&#xff09;  只导出表结构 -A&#xff08;--all-databases&#xf…

栈(模板)、队列(模板)(9.27)

栈 #include <iostream> #include<vector> using namespace std; template<typename T> class my_stack { private:vector<T> *data;public:my_stack() :data(new vector<T>()){}~my_stack(){delete data;};bool empty();//入栈void push(int …

Python设计模式速通

目录 先导 对象的事情 类的事情 方法 面对对象程序设计的几个基本要点 封装 多态 继承 抽象 组合 面对对象程序设计的准则 开放/封闭原则 控制反转原则 接口隔离原则 单一职责原则 替换原则规定 三大模式 创建型模式 结构型模式 行为型模式 先导 我们开始设…

CSDN 的 GIt 是没东西吗

虽然说吧 CSDN 的博客也就那样&#xff0c;记得去年的时候 CSDN 出了一个 Git 代码库&#xff0c;被骂得要死&#xff0c;基本上是从外面搬了一堆代码回来。 这回 CSDN 又玩了个新东西&#xff0c;干脆你可以把你的博客文章同步到你在 CSDN 开的代码库上了。 如何同步 在 CS…