Python:条件分支 if 语句全讲解
Python:条件分支 if 语句全讲解
如果我拿出下面的代码,阁下该做何应对?
if not reset_excuted and (terminated or truncated):
	...
else:
    ...

----
前言:
消化论文代码的时候看到这个东西直接大脑冻结,没想过会在这么基础的东西上犯难

本文初编辑于2024.10.10
CSDN主页:https://blog.csdn.net/rvdgdsva
博客园主页:https://www.cnblogs.com/hassle
运算符优先级
在 Python 中,布尔运算符的优先级从高到低的顺序如下:
- 括号 ():最高优先级,可以用于明确运算顺序。
- not:次高优先级。
- and:次低优先级。
- or:最低优先级。
优先级解析示例
示例 1: 使用括号
a = True
b = False
c = True
result = (a and not b) or c
在这个例子中:
- 括号 首先被计算:
- a and not b中- not b计算为- not False,结果为- True。
- 然后,True and True计算为True。
 
- 最后,整体表达式变为 True or c,结果是True。
示例 2: 不使用括号
x = False
y = True
z = False
result = x or y and not z
在这个例子中:
- 优先级 按照 not>and>or:- not z计算为- not False,结果是- True。
 
- 然后表达式转为 x or y and True。
- 接着 y and True计算为True。
- 最终计算为 x or True,结果是True。
复杂示例
p = True
q = False
r = False
result = not (p and q) or r
在这个示例中:
- 括号 首先被计算:
- p and q计算为- True and False,结果是- False。
 
- 然后,not False计算为True。
- 最终表达式变为 True or r,结果是True。
复杂if语句判断
在表达式 if not a and b 中,not 只对 a 生效,不影响 b。
- not的优先级高于- and,这意味着它会先处理- a的值。
- 首先计算 not a,这将返回a的布尔值的相反值。
- 然后,使用 and运算符将结果与b进行比较。
if not para_A and (para_B or para_C):
    print("进入上面的分支")
else:
    print("进入下面的分支")
回到开头的示例,细细的捋一捋,在这段代码中:
在这里,not只对para_A生效,而不对(para_B or para_C)生效
要推算在什么情况下进入上面的分支或下面的分支,可以分析条件的每个部分。
分析条件
- not para_A:要求- para_A为- False。- 这意味着要进入上面的分支,para_A必须是False。
 
- 这意味着要进入上面的分支,
- (para_B or para_C):要求- para_B或- para_C至少有一个为- True。- 这意味着只要 para_B为True或para_C为True,这个部分就成立。
 
- 这意味着只要 
进入上面的分支的条件
整体条件为 not para_A and (para_B or para_C),因此要进入上面的分支,必须满足以下条件:
- 条件 1:para_A是False。
- 条件 2:para_B是True或para_C是True(至少有一个为True)。
进入下面的分支的条件
为了进入下面的分支,条件需要不成立,即:
- 条件 A: - para_A是- True。- 这时 not para_A为False,条件就不成立。
 
- 这时 
- 条件 B: - para_A是- False,但- para_B和- para_C都是- False。- 这时 (para_B or para_C)为False,条件也不成立。
 
- 这时 
总结条件表
| para_A | para_B | para_C | 结果 | 
|---|---|---|---|
| False | True | False | 进入上面的分支 | 
| False | False | True | 进入上面的分支 | 
| False | True | True | 进入上面的分支 | 
| True | False | False | 进入下面的分支 | 
| True | True | True | 进入下面的分支 | 
| False | False | False | 进入下面的分支 | 
结论
- 进入上面的分支:当 para_A为False,且para_B或para_C至少有一个为True。
- 进入下面的分支:当 para_A为True或者para_A为False,但para_B和para_C都为False。
多分支语句elif
都写那么多了,干脆再补点东西显得更完整吧
在 Python 中,elif 是 “else if” 的缩写,用于在 if 语句中进行多重条件判断。它允许你在第一个 if 条件为 False 的情况下继续检查其他条件,从而实现更多的分支逻辑。
if condition1:
    # 当 condition1 为 True 时执行的代码
elif condition2:
    # 当 condition1 为 False 且 condition2 为 True 时执行的代码
elif condition3:
    # 当 condition1 和 condition2 都为 False 且 condition3 为 True 时执行的代码
else:
    # 当上面的所有条件都为 False 时执行的代码
德摩根定律
在j实际代码应用中,你基本用不上这个定律,上面的东西已经可以解决绝大部分问题了。但如果程序非要在if条件语句上向你发难,至少你也知道怎么应对
德摩根定律是布尔代数中的两个重要定律,它们提供了关于逻辑运算(与、或和非)之间关系的重要公式。这两个定律如下:
第一条定律:
\]
解释:否定 A 或 B 相当于 A 和 B 的否定相与。
第二条定律:
\]
解释:否定 A 且 B 相当于 A 的否定或 B 的否定。
举例说明
我们可以通过几个示例来理解这些定律:
示例 1:第一条定律
考虑 A = True 和 B = False:
- 计算 not(A or B):- A or B是- True
- not(A or B)是- False
 
- 计算 not A and not B:- not A是- False
- not B是- True
- not A and not B是- False
 
结果是一致的:not(A or B) = False 和 not A and not B = False。
示例 2:第二条定律
考虑 A = True 和 B = False:
- 计算 not(A and B):- A and B是- False
- not(A and B)是- True
 
- 计算 not A or not B:- not A是- False
- not B是- True
- not A or not B是- True
 
同样,结果是相等的:not(A and B) = True 和 not A or not B = True。
Python:条件分支 if 语句全讲解的更多相关文章
- python基础-分支判断语句(4)
		1.分支判断语句 1.单一if结构 2.if-else结构 3.if-elif-else结构 4.if嵌套结构 2.单一if结构 只有一种情况的时候 if 条件: 执行语句 说明: if后面的条件成立 ... 
- python条件、循环语句
		既然讲到语句,那先说明一下语句块.语句块不是一种语句,是一组语句.在条件为真时执行或者多次的一组语句.主要注意其格式,用冒号来标识语句块的开始,块中每行缩进相同的量,一般4个空格(tab字符位置为8个 ... 
- python 条件分支与循环
		一.if判断: 语法一: if 条件: # 条件成立时执行的子代码块 代码1 代码2 代码3 示例: sex='female' age=18 is_beautiful=True if sex == ' ... 
- 条件分支SQL语句<一> Case When
		SELECT END ) AS MoneyIn, END ) AS MoneyOut, END ) AS BetMoney, END ) AS PctMoney, END ) AS WinMoney, ... 
- Python 2.7 学习笔记  条件与循环语句
		本文介绍下python条件和循环语句的语法 一.if条件语句 语法格式如下: if 表达式: .... elif 表达式: .... elif 表达式: .... else: ..... 说明:与其它 ... 
- Python教程(2.7)——条件分支
		像其它语言一样,Python也有条件分支. 例如,输入用户年龄,可能需要判断是否成年,并做出不同反应.这就需要用到条件分支. if条件分支 if条件分支的一般格式如下: if condition: s ... 
- python实例 条件和循环语句
		#! /usr/bin/python #条件和循环语句 x=int(input("Please enter an integer:")) if x<0: x=0 ... 
- python之最强王者(3)——变量,条件、循环语句
		1.Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的 ... 
- #7   Python顺序、条件、循环语句
		前言 上一节讲解了Python的数据类型和运算,本节将继续深入,涉及Python的语句结构,相当于Python的语法,是以后编写程序的重要基础! 一.顺序语句 顺序语句很好理解,就是按程序的顺序逻辑编 ... 
- 一、变量.二、过滤器(filter).三、标签(tag).四、条件分支tag.五、迭代器tag.六、自定义过滤器与标签.七、全系统过滤器(了解)
		一.变量 ''' 1.视图函数可以通过两种方式将变量传递给模板页面 -- render(request, 'test_page.html', {'变量key1': '变量值1', ..., '变量ke ... 
随机推荐
- 蔡磊公布渐冻症诊断报告 5月住进ICU一度考虑气切
			原文地址: https://baijiahao.baidu.com/s?id=1801485780372006198 
- 强化学习运行环境,atari 2600 游戏模拟器,atari-py库 —— 无法运行游戏,pacman,surround,报错:  Segmentation fault (core dumped)
			atari2600运行环境: https://github.com/openai/atari-py 安装环境,以及导入 rom文件这里不进行介绍(前文已介绍): 测试游戏环境rom文件能否正常加载如内 ... 
- obs 直播软件 虚拟摄像头插件 —— obs-virtualcam
			如题: 外网下载地址: https://github.com/Fenrirthviti/obs-virtual-cam/releases 这个东西是做啥用的这里就不讲了,这个东西的资源不好找,找了好半 ... 
- Git 使用中的一些例子
			本文紧接前文: .gitignore文件的使用方法(学习总结版)-- .gitignore 文件的配合用法 ============================================= ... 
- 前端黑科技:使用 JavaScript 实现网页扫码功能
			在数字化时代,二维码已经渗透到我们生活的方方面面.从移动支付到产品溯源,二维码凭借其便捷性和高效性,成为了信息传递的重要载体.而随着前端技术的不断发展,我们甚至可以使用 JavaScript 在网页端 ... 
- 9组-Beta冲刺-2/5
			一.基本情况(15分) 队名:不行就摆了吧 组长博客:9组-Beta冲刺-2/5 GitHub链接:https://github.com/miaohengming/studynote/tree/mai ... 
- 第 356 场周赛 - 力扣(LeetCode)
			第 356 场周赛 - 力扣(LeetCode) 2798. 满足目标工作时长的员工数目 - 力扣(LeetCode) 一次遍历 class Solution { public: int number ... 
- disconf分布式配置管理(一) 安装与配置
			一.背景 在生产部署过程中,遇到以下问题: 1.由于节点较多,每次增量修改配置文件后都需要每个节点替换配置文件. 2.有些动态配置修改后,需要重启服务. 二.解决方案 1.使用linux文件共享配置文 ... 
- 软件开发工程师,几款常用的APP,你用过几款?最后一个测试网络必备
			作为一名程序员,手机里一定有几个常用的app,下面给大家推荐几款. 1. CSDN 国内最大编程论坛:虽然有多少人吐槽现在使用csdn就像屎里淘金, 但是不得不承认他仍然是大家搜索技术资料.问题的首选 ... 
- mmdetection使用未定义backbone训练
			首先找到你需要用到的 backbone,一般有名的backbone 都会在github有相应的代码开源和预训练权重提供 本文以mobilenetv3 + fastercnn 作为举例,在mmdetec ... 
