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 ...
随机推荐
- docker 容器挂载技术
创建和使用桥接网络 docker network create --driver bridge --subnet 192.168.13.0/24 --gateway 192.168.13.1 mqyn ...
- Jmeter函数助手10-regexFunction
regexFunction函数用于对上一个请求进行正则表达式提取处理,类似正则表达式. 用于从前一个请求搜索结果的正则表达式:填入正则表达式 Template for the replacement ...
- 【Java-GUI】01 AWT & 布局
https://www.bilibili.com/video/BV1Z54y1S7ns --1.AWT 完整描述:Abstract Window Toolkit 抽象窗口工具集 提供的API资源 抽象 ...
- 【牛客刷题】BM50 两数之和
本题的链接:BM50 两数之和 最初拿到这个题目首先想到的就是两个指针,然后向后遍历,于是写出来的代码也简明易懂: package main /** * * @param numbers int整型一 ...
- C语言中的短路现象
短路现象1 比如有以下表达式 a && b && c 只有a为真(非0)才需要判断b的值: 只有a和b都为真,才需要判断c的值. 举例 求最终a.b.c.d的值. ma ...
- Linux查看硬件信息超强命令sar,以及可视化工具ksar
一.概述 sar(System Activity Reporter,系统活动情况报告)是Linux下系统运行状态统计工具,可从多方面对系统的活动进行报告,包括:文件的读写情况.系统调用的使用情况.磁盘 ...
- 热力学平衡、Liftshitz 理论和朗道理论
科学家们经过广泛的实验发现:熔化往往始于固体表面.熔化时,体系由 "固体-气体接触" 变为 "固体-熔化层接触 + 熔化层-气体接触".如果后者的能量更稳定,则 ...
- Win32 插入符光标跟随的打字小程序
1.先创建插入符光标 在WM_CREATE消息中 LRESULT OnCreate(HWND hWnd, WPARAM wParam, LPARAM lParam) { HDC hdc = GetDC ...
- Transformer模型:Position Embedding实现
在自然语言处理(NLP)中,Transformer 模型是一个非常重要的里程碑,它通过自注意力(self-attention)机制极大地提高了处理序列数据的能力.在 Transformer 模型中,词 ...
- C# JSON序列化指定名称
今天在做项目时遇到了要将json对象序列化为数据库表, 结果数据库表和json对象数据类型和字段名称对不上.于是就有了一下的解决方案: 需要转化的对象 { "orgAccountId&qu ...