首页 > 编程语言 >Python:条件分支 if 语句全讲解

Python:条件分支 if 语句全讲解

时间:2024-10-10 16:22:28浏览次数:8  
标签:语句 False para 示例 Python 条件 讲解 True 分支

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 中,布尔运算符的优先级从高到低的顺序如下:

  1. 括号 ():最高优先级,可以用于明确运算顺序。
  2. not:次高优先级。
  3. and:次低优先级。
  4. or:最低优先级。

优先级解析示例

示例 1: 使用括号

a = True
b = False
c = True

result = (a and not b) or c

在这个例子中:

  1. 括号 首先被计算:
    • a and not bnot b 计算为 not False,结果为 True
    • 然后,True and True 计算为 True
  2. 最后,整体表达式变为 True or c,结果是 True

示例 2: 不使用括号

x = False
y = True
z = False

result = x or y and not z

在这个例子中:

  1. 优先级 按照 not > and > or
    • not z 计算为 not False,结果是 True
  2. 然后表达式转为 x or y and True
  3. 接着 y and True 计算为 True
  4. 最终计算为 x or True,结果是 True

复杂示例

p = True
q = False
r = False

result = not (p and q) or r

在这个示例中:

  1. 括号 首先被计算:
    • p and q 计算为 True and False,结果是 False
  2. 然后,not False 计算为 True
  3. 最终表达式变为 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)生效

要推算在什么情况下进入上面的分支或下面的分支,可以分析条件的每个部分。

分析条件

  1. not para_A:要求 para_AFalse

    • 这意味着要进入上面的分支,para_A 必须是 False
  2. (para_B or para_C):要求 para_Bpara_C 至少有一个为 True

    • 这意味着只要 para_BTruepara_CTrue,这个部分就成立。

进入上面的分支的条件

整体条件为 not para_A and (para_B or para_C),因此要进入上面的分支,必须满足以下条件:

  • 条件 1para_AFalse
  • 条件 2para_BTruepara_CTrue(至少有一个为 True)。

进入下面的分支的条件

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

  1. 条件 Apara_ATrue

    • 这时 not para_AFalse,条件就不成立。
  2. 条件 Bpara_AFalse,但 para_Bpara_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_AFalse,且 para_Bpara_C 至少有一个为 True
  • 进入下面的分支:当 para_ATrue 或者 para_AFalse,但 para_Bpara_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条件语句上向你发难,至少你也知道怎么应对

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

第一条定律

\[\text{not}(A\ or\ B) \equiv \text{not} A \ and\ \text{not} B \]

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

第二条定律

\[\text{not}(A \ and\ B) \equiv \text{not} A \ or\ \text{not} B \]

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

举例说明

我们可以通过几个示例来理解这些定律:

示例 1:第一条定律

考虑 A = TrueB = False

  • 计算 not(A or B)
    • A or BTrue
    • not(A or B)False
  • 计算 not A and not B
    • not AFalse
    • not BTrue
    • not A and not BFalse

结果是一致的:not(A or B) = Falsenot A and not B = False

示例 2:第二条定律

考虑 A = TrueB = False

  • 计算 not(A and B)
    • A and BFalse
    • not(A and B)True
  • 计算 not A or not B
    • not AFalse
    • not BTrue
    • not A or not BTrue

同样,结果是相等的:not(A and B) = Truenot A or not B = True

标签:语句,False,para,示例,Python,条件,讲解,True,分支
From: https://www.cnblogs.com/hassle/p/18456599

相关文章

  • python 图片压缩
    '''pipinstallpillow'''fromioimportBytesIOfromPILimportImagedefpic_compress(pic_path,out_path,target_size,quality=90,step=5):#读取图片byteswithopen(pic_path,'rb')asf:pic_byte......
  • SCIE1000 Python and Communication
    SCIE1000Semester2,2024PythonandCommunicationAssignment1ThescenarioAnewpublicsciencemuseuminStLuciaisdevelopinganexhibit.Afeatureofthemuseumisthateachexhibititemisaccompaniedbytwoexplanations,eachwrittenforadiffe......
  • Python基础知识7
    Python字典(dict)1.字典是一种可变容器模型,且可存储任意类型对象。2.字典的每个键值对(key:value)用冒号分割,每个对之间用逗号分割,整个字典包括在花括号{}中d={key1:value1,key2:value2,key3:value3}创建字典1.dict作为Python的关键字和内置函数,变量......
  • Python基础知识8
    Python集合(set)1.集合(set)是一个无序的不重复元素序列。2.集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。创建集合1.可以使用大括号{}创建集合,元素之间用逗号,分隔,或者也可以使用set()函数创建集合。parame={value01,value02,...}set(va......
  • Python 处理 JSON 格式数据
    Author:ACatSmilingSince:2024-10-09需求:将文件中的JSON格式数据,指定Key的值替换。对于文件的整个文本为JSON格式的数据。示例:{'A':{'a':23.45,'b':56.78,'c':89.01}}Python代码:importjson#读取原始JSON数......
  • 【python实操】python小程序之继承
    引言python小程序之继承文章目录引言一、继承1.1概念1.1.1基本语法1.1.2关键点解释1.1.3示例1.1.4总结1.2题目1.3代码1.4代码解释1.4.1类定义1.4.2对象创建与方法调用1.4.3总结二、思考一、继承1.1概念python中的继承是一种强大的机制,它允许一......
  • <Project-8.1 pdf2tx-MM> Python Flask 用浏览器翻译PDF内容 2个翻译引擎 繁简中文结果
    更新ProjectName:pdf2tx(P6)Date:5oct.24Function:在浏览器中翻译PDF文件Code:https://blog.csdn.net/davenian/article/details/142723144升级ProjectName:pdf2tx-mm(P8)7oct.24 加入多线程,分页OCR识别,提高性能与速度使用googletranslator, AzureAPI做......
  • 【Python脚本】getopt参数解析笔记
    getopt参数解析笔记背景在Python中,使用getopt模块进行命令行参数解析是常见的需求。在编写脚本时,正确地定义参数选项对于确保程序正常运行至关重要。这是一个用于检测安卓软件版本的脚本一部分,有些用法和笔记分享给大家问题描述在某个脚本中,使用getopt解析命令......
  • [Python手撕]第 k 个缺失的正整数
    给你一个严格升序排列的正整数数组arr和一个整数k。请你找到这个数组里第k个缺失的正整数。示例1:输入:arr=[2,3,4,7,11],k=5输出:9解释:缺失的正整数包括[1,5,6,8,9,10,12,13,...]。第5个缺失的正整数为9。示例2:输入:arr=[1,2,3,4],k=2输出:6解释:缺......
  • 基于Python后端构建多种不同的系统终端界面研究
    在我们一般开发系统的时候,往往会根据实际需要做出各种不同的系统终端界面,如基于BS的,CS、APP、小程序等等,一般都是基于一个统一接入的WebAPI后端,本篇系统探寻对基于Python后端构建多种不同的系统终端界面研究,介绍一些基于Python后端开发的不同终端界面。1、Python系统终端界面我......