Python条件分支 if 语句全讲解(一文掌握)

 更新时间:2024年10月11日 09:26:07   作者:这可就有点麻烦了  
在Python编程中,布尔运算符有明确的优先级顺序,影响代码逻辑判断,从高到低依次是:括号()、not、and、or,括号用于明确运算顺序,not具有次高优先级,影响单个布尔值,and和or则根据优先级顺序结合布尔值,正确理解和应用这些优先级对于编写有效和准确的条件语句至关重要

如果我拿出下面的代码,阁下该做何应对?

if not reset_excuted and (terminated or truncated):
	...
else:
    ...

运算符优先级

在 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),因此要进入上面的分支,必须满足以下条件:

  • 条件 1para_A 是 False
  • 条件 2para_B 是 True 或 para_C 是 True(至少有一个为 True)。

进入下面的分支的条件

为了进入下面的分支,条件需要不成立,即:

  • 条件 Apara_A 是 True

    • 这时 not para_A 为 False,条件就不成立。
  • 条件 Bpara_A 是 False,但 para_B 和 para_C 都是 False

    • 这时 (para_B or para_C) 为 False,条件也不成立。

总结条件表

para_Apara_Bpara_C结果
FalseTrueFalse进入上面的分支
FalseFalseTrue进入上面的分支
FalseTrueTrue进入上面的分支
TrueFalseFalse进入下面的分支
TrueTrueTrue进入下面的分支
FalseFalseFalse进入下面的分支

结论

  • 进入上面的分支:当 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条件语句上向你发难,至少你也知道怎么应对

德摩根定律是布尔代数中的两个重要定律,它们提供了关于逻辑运算(与、或和非)之间关系的重要公式。这两个定律如下:

第一条定律

not(A or B)≡notA and notB

解释:否定 A 或 B 相当于 A 和 B 的否定相与。

第二条定律

not(A and B)≡notA or notB

解释:否定 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条件分支 if 语句内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python循环语句介绍

    Python循环语句介绍

    大家好,本篇文章主要讲的是Python循环语句介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • python批量压缩图像的完整步骤

    python批量压缩图像的完整步骤

    本文分享的内容来源于一次做项目的经验,也就是从那之后才体会到了python强大的文件批处理能力,这篇文章主要给大家介绍了关于python批量压缩图像的相关资料,需要的朋友可以参考下
    2021-12-12
  • Python Queue模块详解

    Python Queue模块详解

    这篇文章主要介绍了Python Queue模块详解,需要的朋友可以参考下
    2014-11-11
  • Python实现图片与视频互转代码实战(亲测有效)

    Python实现图片与视频互转代码实战(亲测有效)

    图片转视频,视频转图片手机一操作,立马转换过来,那么基于代码是如何操作的呢?下面小编给大家带来了Python实现图片与视频互转代码实战,感兴趣的朋友跟随小编一起看看吧
    2021-12-12
  • Python selenium模块的安装和配置教程

    Python selenium模块的安装和配置教程

    这篇文章主要为大家介绍了python中selenium模块的安装和配置环境变量教程、提取数据操作、无头模式,有需要的朋友可以借鉴参考下,希望能够对大家有所帮助
    2022-10-10
  • Python socket模块ftp传输文件过程解析

    Python socket模块ftp传输文件过程解析

    这篇文章主要介绍了Python socket模块ftp传输文件过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Django的models中on_delete参数详解

    Django的models中on_delete参数详解

    这篇文章主要介绍了Django的models中on_delete参数详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Python使用pygame模块编写俄罗斯方块游戏的代码实例

    Python使用pygame模块编写俄罗斯方块游戏的代码实例

    这篇文章主要介绍了Python使用pygame模块编写俄罗斯方块游戏的代码实例,最基本的方块变换和行消除等功能都在代码中一一体现,需要的朋友可以参考下
    2015-12-12
  • Python 开发工具PyCharm安装教程图文详解(新手必看)

    Python 开发工具PyCharm安装教程图文详解(新手必看)

    PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。今天通过本文给大家分享PyCharm安装教程,一起看看吧
    2020-02-02
  • Python中 pickle 模块的 dump() 和 load() 方法详解

    Python中 pickle 模块的 dump() 和 load()&

    Python 的 pickle 模块用于实现二进制序列化和反序列化,一个对象可以被序列化到文件中,然后可以从文件中恢复,这篇文章主要介绍了Python中 pickle 模块的 dump() 和 load() 方法详解,需要的朋友可以参考下
    2022-12-12

最新评论