15、Python布尔逻辑全解析:运算符优先级、短路特性与实战避坑指南
适合人群:零基础自学者 | 编程小白快速入门
阅读时长:约6分钟
文章目录
- 一、问题:Python布尔值的底层原理?
- 1、例子1:电路开关模型解析布尔本质
- 2、例子2:特殊的布尔类型值为False
- 3、答案:
- (1)布尔值的本质
- (2)一些特殊的布尔类型值为False
- 二、问题:Python的逻辑运算符?
- 1、例子1:灯光自动控制
- 2、例子2:空调节能模式
- 3、答案:
- (1)逻辑运算符
- (2)逻辑运算符短路规则
- (3)逻辑运算优先级
- 三、问题:Python的比较运算符?
- 1、例子1:真实场景案例
- 2、答案:
- (1)比较运算符
- 四、动手试一试
- 任务1:智能门禁系统
- 任务2:年龄验证与条款确认
一、问题:Python布尔值的底层原理?
1、例子1:电路开关模型解析布尔本质
# 布尔值本质是电路开关
light_on = True # 开 → 通电状态
door_closed = False # 关 → 断开状态 # 布尔值运算等同于电路组合
print(light_on and door_closed) # 输出:False → 串联电路
print(light_on or door_closed) # 输出:True → 并联电路# 内存验证
print(True == 1) # 输出:True
print(False == 0) # 输出:True
print(True + False) # 输出:1
2、例子2:特殊的布尔类型值为False
a = True
b = 3
c = a + b
print(c) # c的值是:4
print('空字符串的布尔类型的值:', bool('')) # False
print('空列表布尔类型的值:', bool([])) # False
print('None布尔类型的值:', bool(None)) # False
print('0布尔类型的值:', bool(0))
print('字符串True和False转成布尔类型都是True:', bool('False')) # True
3、答案:
(1)布尔值的本质
- Python2中没有布尔值,直接用数字
0
表示False
,用数字1
表示True
。 - Python3中,把
True
和False
定义成了关键字,但它们本质还是1
和0
,甚至可以和数字相加。 - 在Python语言底层,会将布尔值
True
看作1
,将布尔值False
看作0
,尽管表面上看True
与1
、False
与0
是不同类型,但在数值运算中它们完全等价。
(2)一些特殊的布尔类型值为False
- 在Python语言中有一些特殊的布尔类型值为
False
,例如False
、0
、0.0
、空值None
、空序列对象(空列表、空元组、空集合、空字典、空字符串)、空range对象、空迭代对象。其他情况,均为True
。
二、问题:Python的逻辑运算符?
1、例子1:灯光自动控制
# 情景:当房间有人且光线暗时自动开灯
is_person_present = True # 检测到人体
is_room_dark = True # 光线传感器检测到昏暗light_on = is_person_present and is_room_dark
print(f"自动开灯:{light_on}") # 输出:True → 两个条件都满足
2、例子2:空调节能模式
# 情景:当温度高于30℃或用户手动开启时启动制冷
temperature = 28
user_override = True # 用户手动开启空调cooling_active = (temperature > 30) or user_override
print(f"制冷启动:{cooling_active}") # 输出:True → 满足其中一个条件
3、答案:
(1)逻辑运算符
- 逻辑运算符:
or
逻辑或、and
逻辑与、not
逻辑非
逻辑运算符如下:
运算符 | 格式 | 说明 |
---|---|---|
or 逻辑或 | x or y | x为true,则不计算y,直接返回true;x为false,则返回y |
and 逻辑与 | x and y | x为true,则返回y的值;x为false,则不计算y,直接返回false |
not 逻辑非 | not x | x为true,返回false;x为false,返回true |
(2)逻辑运算符短路规则
and
短路:左假则右不执行。or
短路:左真则右不执行
运算符 | 类比场景 | 记忆口诀 |
---|---|---|
and | 串联电路 | 全真为真,遇假即停 |
or | 并联电路 | 有真即真,全假才假 |
not | 开关反转 | 真变假,假变真 |
(3)逻辑运算优先级
逻辑运算优先级:not
> and
> or
三、问题:Python的比较运算符?
1、例子1:真实场景案例
# 密码验证(等于)
input_pwd = "123456"
true_pwd = "654321"
is_correct = input_pwd == true_pwd
print(f"密码正确:{is_correct}") # 输出:False# 年龄验证(大于等于)
user_age = 18
can_register = user_age >= 18
print(f"允许注册:{can_register}") # 输出:True# 购物车价格检查(小于)
item_price = 299
budget = 300
can_purchase = item_price < budget
print(f"可以购买:{can_purchase}") # 输出:True
2、答案:
(1)比较运算符
比较运算符:所有的比较运算符返回 1
表示真,返回 0
表示假。这分别与特殊变量 True
和 False
等价。
以下假设变量 a=15,b=30
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 - 比较对象的值是否相等 | (a == b) 返回 False |
!= | 不等于 - 比较两个对象的值是否不相等 | (a != b) 返回 True |
> | 大于 - 返回x是否大于y | (a > b) 返回 False |
< | 小于 - 返回x是否小于y | (a < b) 返回 True |
>= | 大于等于 - 返回x是否大于等于y | (a >= b) 返回 False |
<= | 小于等于 - 返回x是否小于等于y | (a <= b) 返回 True |
四、动手试一试
任务1:智能门禁系统
# 情景:用户需同时满足年龄≥18岁且持有有效证件方可进入
age = 20
has_valid_id = True # 补全逻辑判断
access_allowed = ______
print(f"允许进入:{access_allowed}") # 目标输出:True
参考答案:access_allowed = (age >= 18) and has_valid_id
解析:
and
要求两侧条件同时为真- 变量名清晰表达业务逻辑(
age
年龄,has_valid_id
是否持证)
任务2:年龄验证与条款确认
user_age = 17
has_parent_consent = True # 补全条件判断(年龄≥18 或 未成年但有监护人同意)
can_register = ______
print(f"允许注册:{can_register}") # 目标输出:True
参考答案:can_register = (user_age >= 18) or (has_parent_consent and user_age < 18)
关键点:
or
运算符实现条件分支- 组合判断未成年特殊情况
📢 互动区
👉 遇到问题?在评论区:
- 描述问题(带代码截图更好)
- 分享学习心得
- 给文章提建议
⭐ 支持作者:点赞 | 收藏 | 关注
你的三连是我更新的最大动力!
相关文章:
15、Python布尔逻辑全解析:运算符优先级、短路特性与实战避坑指南
适合人群:零基础自学者 | 编程小白快速入门 阅读时长:约6分钟 文章目录 一、问题:Python布尔值的底层原理?1、例子1:电路开关模型解析布尔本质2、例子2:特殊的布尔类型值为False3、答案:(1&…...

Nginx基础知识
Nginx是什么? Nginx 是一款高性能的 Web 服务器、反向代理服务器和负载均衡器,以其高并发处理能力和低内存消耗著称。以下是 Nginx 的基础知识和常见配置示例: 1. 核心概念 • 配置文件位置:通常为 /etc/nginx/nginx.conf 或 /us…...

Vue-监听属性
监听属性 简单监听 点击切换名字,来回变更Tom/Jerry,输出 你好,Tom/Jerry 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><title>监听属性</title><!-- …...

python fastapi + react, 写一个图片 app
1. 起因, 目的: 上厕所的时候,想用手机查看电脑上的图片,但是又不想点击下载。此app 应运而生。 2. 先看效果 单击图片,能放大图片 3. 过程: 过程很枯燥。有时候, 有一堆新的想法。 但是做起来太麻烦,…...
nginx集成防火墙ngx_waf的docker版
由于公网的环境越来与严峻,所以想找一个nginx带防火墙的版本 调研过openresty,大部分集成redis了,感觉还是太重了,有一个不那么重的https://github.com/unixhot/waf 但是维护没有那么勤,最后维护是5年前,倒…...

vscode c++编译onnxruntime cuda 出现的问题
问题描述 将onnx的dll文件和lib文件copy到可执行文件所在文件夹下后,现象: 双击可执行文件能正常运行 在vscode中点击cmake插件的运行按钮出现报错为 c [ONNXRuntimeError] : 1 : FAIL : LoadLibrary failed with error 126 “” when trying to load尝试…...
sts下载安装
windows下STS(Spring Tools Suite,自带spring插件的eclipse)的下载与安装_sts下载-CSDN博客Spring Boot安装与配置教程_spring boot安装配置-CSDN博客...

中服云生产线自动化智能化调度生产系统:打造智能制造新标杆
前言 在当今制造业竞争日益激烈的背景下,实现生产线的自动化与智能化已成为企业提升竞争力的关键。作为国内技术领先的工业物联网平台、数字孪生、自动控制技术厂商,中服云凭借其深厚的技术积累和创新能力,打造了一套完整的生产线自动化智能…...
next.js实现项目搭建
一、创建 Next.js 项目的步骤 1、安装 npx create-next-applatest # 或 yarn create next-app # 或 pnpm create next-app 按照交互式提示配置你的项目: 输入项目名称 选择是否使用 TypeScript 选择是否启用 ESLint 选择是否启用 Tailwind CSS 选择是否使用 s…...
Redisson 四大核心机制实现原理详解
一、可重入锁(Reentrant Lock) 可重入锁是什么? 通俗定义 可重入锁类似于一把“智能锁”,它能识别当前的锁持有者是否是当前线程: 如果是,则允许线程重复获取锁(重入),并…...

云鼎入鼎系统:一站式电商管理解决方案
个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] 📱个人微信&a…...

Leetcode134加油站
题目链接 134 题意图解: 题目给了n个节点,这些节点呈现环状,每次到一个低点要消耗cost[i]的油量。 从中我们可以得出一个结论:看一个点能不能到下一个点,就要用当前的油量减去消耗的量,那么gas[i] - cost…...

关于Android Studio for Platform的使用记录
文章目录 简单介绍如何使用配置导入aosp工程配置文件asfp-config.json 简单介绍 Android Studio for Platform是google最新开发,用来阅读aosp源码的工具 详细的资料介绍: https://developer.android.google.cn/studio/platform 将工具下载下来直接点击…...
Linux的内存泄漏问题及排查方法
内存泄漏是指在计算机程序中,已不再被使用的内存未被正确释放,导致内存占用随时间累积,进而引发系统内存不足、性能下降甚至崩溃的问题。在Linux系统中,开发者和运维人员可通过以下方法排查和解决内存泄漏问题: 1. 使…...

uniapp 微信小程序 获取openId
嗨,我是小路。今天主要和大家分享的主题是“uniapp 微信小程序 获取openId”。 一、主要属性 1.uni.login 二、实例代码 1、前端代码 uni.login({provider: weixin,success: (res) > {uni.showLoading({title: 登录中...,mask: true})let code res.…...

隧道结构安全在线监测系统解决方案
一、方案背景 隧道是地下隐蔽工程,会受到潜在、无法预知的地质因素影响。随着我国公路交通建设的发展,隧道占新建公路里程的比例越来越大。隧道属于线状工程,有的规模较大,可长达几公里或数十公里,往往穿越许多不同环境…...

Docker 运维管理
Docker 运维管理 一、Swarm集群管理1.1 Swarm的核心概念1.1.1 集群1.1.2 节点1.1.3 服务和任务1.1.4 负载均衡 1.2 Swarm安装准备工作创建集群添加工作节点到集群发布服务到集群扩展一个或多个服务从集群中删除服务ssh免密登录 二、Docker Compose与 Swarm 一起使用 Compose 三…...
【Redis】快速列表结构
目录 1、背景2、压缩列表【1】底层结构【2】特性【3】优缺点 1、背景 redis的quicklist(快速列表)是一个双向链表,其中每个节点都是一个ziplist(压缩列表)。这中结构结合了双向链表和压缩列表的优点,在内存…...
阿里巴巴 1688 数据接口开发指南:构建自动化商品详情采集系统
在电商行业数据驱动决策的趋势下,高效获取商品详情数据成为企业洞察市场、优化运营的关键。通过阿里巴巴 1688 数据接口构建自动化商品详情采集系统,能够快速、精准地采集海量商品信息。本文将从开发准备、接口分析、代码实现等方面,详细介绍…...

[SpringBoot]Spring MVC(2.0)
紧接上文,这篇我们继续讲剩下的HTTp请求 传递JSON数据 简单来说:JSON就是⼀种数据格式,有⾃⼰的格式和语法,使⽤⽂本表⽰⼀个对象或数组的信息,因此JSON本质是字符串. 主要负责在不同的语⾔中数据传递和交换 JSON的语法 1. 数据在 键值对(Key/Value) …...

Golang的网络安全策略实践
Golang的网络安全策略实践 一、理解网络安全的重要性 当今的网络环境中,安全问题日益突出,各种类型的攻击如雨后春笋般涌现,给个人和组织的信息资产造成了严重威胁。因此,制定和实施有效的网络安全策略至关重要。 二、Golang在网络…...

STM32外设AD-轮询法读取模板
STM32外设AD-轮询法读取模板 一,什么是轮询?1,轮询法的直观理解2,轮询法缺点 二,CubeMX配置三,模板移植1,adc_app.c文件2,变量声明1,adc_app.c中2,mydefine.h…...
C++编程this指针练习
这段代码是用 C 编写的,定义了一个 Car 类(类是 C 中用于创建对象的蓝图),并通过 main() 函数创建和使用了该类的对象。下面是对整个程序的逐行解释,并在关键部分加上注释说明。 ✅ 代码整体功能: 定义一个…...

iOS音视频解封装分析
首先是进行解封装的简单的配置 /// 解封装配置 class KFDemuxerConfig {// 媒体资源var asset: AVAsset?// 解封装类型,指定是音频、视频或两者都需要var demuxerType: KFMediaType .avinit() {} }然后是实现解封装控制器 import Foundation import CoreMedia i…...

突破智能驾舱边界,Imagination如何构建高安全GPU+AI融合计算架构
日前,“第十二届汽车电子创新大会暨汽车芯片产业生态发展论坛(AEIF 2025)”在上海顺利举办。大会围绕汽车前沿性、关键性和颠覆性技术突破,邀请行业众多专家学者,分享与探讨了汽车电子产业的技术热点与发展趋势。在5月…...

DeepSeek 如何实现 128K 上下文窗口?
DeepSeek 如何实现 128K 上下文窗口?长文本处理技术揭秘 系统化学习人工智能网站(收藏):https://www.captainbed.cn/flu 文章目录 DeepSeek 如何实现 128K 上下文窗口?长文本处理技术揭秘摘要引言技术架构解析1. 动态…...
云计算简介:从“水电”到“数字引擎”的技术革命
云计算简介:从“水电”到“数字引擎”的技术革命 在当今数字化浪潮中,云计算早已从一个技术概念演变为支撑现代社会运转的核心基础设施。无论是你手机里的天气预报、电商购物的推荐系统,还是企业内部的ERP系统,背后都离不开云计算…...
计算圆周率 (python)
使用模特卡罗方法(模拟法),模拟撒点100000次,计算圆周率π 输入格式: 一个整数,表示随机数种子 输出格式: 计算的π值,结果小数点后保留5位数字 输入样例: 在这里给出一组输入。例如: 10…...

Python 实现图片浏览和选择工具
实现将截图预览,并按照顺序加入一个pdf文件中,实现照片管理尤其对于喜欢看教程截图做笔记的网友们。 C:\pythoncode\new\python-image-pdf-processor.py 界面展示 🧱 一、核心结构概述 主类 ImageViewer(wx.Frame) 是主窗口类,…...

Python实现的在线词典学习工具
Python实现的在线词典学习工具 源码最初来自网络,根据实际情况进行了修改。 主要功能: 单词查询 通过Bing词典在线获取单词释义(正则提取网页meta描述),支持回车键快速查询 内置网络请求重试和异常处理机制 在线网页…...