Python逻辑运算符及其用法

逻辑运算符用于操作 bool 类型的变量、常量或表达式,逻辑运算的返回值也是 bool 值。

Python 的逻辑运算符有如下三个:

and:与,前后两个操作数必须都是 True 才返回 True;否则返回 False。

or:或,只要两个操作数中有一个是 True,就可以运回 True;否则返回 False;

not:非,只需要一个操作数,如果操作数为 True,则返回 False;如果操作数为 False,则返回 True。

下面代码示范了与、或、非这三个逻辑运算符的使用:

复制代码
# 直接对False求非运算,将返回True
print(not False)
# 5>3返回True,20.0大于10,因此结果返回True
print(5 > 3 and 20.0 > 10)
# 4>=5返回False,"c">"a"返回True。求或后返回True
print(4 >= 5 or "c" > "a")

有些时候,程序需要使用多个逻辑运算符来组合复杂的逻辑。例如,假设想表达如下逻辑:需要购买一套必须以"Python"结尾的教程,且教程价格小于 50 元或该教程是基于"正式版"的。假如使用如下程序:

复制代码
bookName = "C语言中文网Python"
price = 99
version = "正式版"
if bookName.endswith('Python') and price < 50 or version == "正式版" :
    print("打算购买这套Python教程")
else:
    print("不购买!")

编译、运行上面程序,可以看到程序输出"打算购买这套Python教程"。那么上面程序是否有问题呢?

其实问题是存在的,这是因为程序会先计算 bookName.endswith('Python') and price < 50,即使该逻辑表达式中的两个条件都是 False,但只要后面的 version=="正式版" 返回 True,整个表达式就会返回 True,从而导致程序依然会输出"打算购买这套Python教程"。因此,即使把上面程序中的 bookName 改为不以"Python"结尾,程序也依然会输出"打算购买这套Python教程"。

运算结果显然与逻辑需求并不一致,逻辑需求是:需要购买一套名以"Python" 结尾的教程。此时应该使用圆括号来保证程序先对 price < 50 || version =="正式版" 求值,然后再与 bookName.endswith('Python') 的结果求与。

因此,应该把程序改为如下形式:

复制代码
bookName = "C语言中文网Python"
price = 99
version = "正式版"
if bookName.endswith('Python') and (price < 50 or version == "正式版") :
    print("打算购买这套Python教程")
else:
    print("不购买!")

从上面代码可以看出,对于组合逻辑来说,使用圆括号保证运算顺序非常重要。

需要说明的是,即使不是为了保证逻辑运算的顺序,且有括号和没括号的输出结果是一样的,本教程也依然建议使用圆括号来提高程序的可读性。

相关推荐
wuyk55540 分钟前
Python 第三章:列表 List
服务器·开发语言·python
笨鸟先飞,勤能补拙43 分钟前
从预测到决策:人工智能与机器学习的系统方法、工程闭环与现实边界
大数据·人工智能·windows·python·机器学习·密码学
Evand J1 小时前
【MATLAB例程,车联网7】CACC网联车辆协同控制:ACC对比、V2X时延丢包与队列稳定性,附例程下载链接
开发语言·matlab·车联网
MgArcher1 小时前
抖音a_bogus参数逆向实战:JSVMP环境模拟与Hook技术(2025最新)
javascript·爬虫·python
circuitsosk2 小时前
AI输出的“质检员”:构建智能体质量评估、异常检测与人工兜底的三层防线
人工智能·python·microsoft·正则表达式·langchain
要努力点2 小时前
Python入门第六课
开发语言·python
CTA终结者2 小时前
先用小策略练清条件和动作
人工智能·python
Bruce_Liuxiaowei2 小时前
从零到可运行:基于 Vue3 + FastAPI + DeepSeek-V3 的 AI 英语单词学习系统全栈实战
人工智能·python·学习·fastapi·全栈·智能体
萧瑟余晖2 小时前
Java深入解析篇三十三之消息队列
java·开发语言
ValhallaCoder2 小时前
Leetcode-hot100(2026.08.17)
python·算法·leetcode