社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python入门 | 逻辑运算的那些坑

Crossin的编程教室 • 3 年前 • 495 次点击  

入门教程、案例源码、学习资料、读者群

请访问: python666.cn


大家好,欢迎来到 Crossin的编程教室 !

上一篇(如何判断多个条件)最后我们留了一个思考题:用代码表示「不会唱跳和打篮球」

不少人觉得是:

not (会唱跳 and 会打篮球)

但如果代入:

会唱跳 = False会打篮球 = True

上面代码的结果是 True。

翻译一下就是:如果一个人不会唱跳,但是会打篮球,那么他就是不会唱跳和打篮球

听起来有点怪怪的。

仔细想一下,我们平常口语中说「不会唱跳和打篮球」,其实意思是 不会唱跳 并且 不会打篮球

所以应该是:

not 会唱跳 and not 会打篮球

这个表达式也可以写成

not (A or B)

这个等价关系叫做逻辑运算的反演律,即:

not A and not B == not (A or B)not (A and B) == not A or not B

为了便于记忆和查找,给大家整理了一下逻辑运算的一些规律:

3个逻辑运算符的优先级并不是相同的,而是

not > and > or

来看一个例子:

3个变量,分别对应 ①我有没有空 ②你有没有空 ③天气好不好
用代码表示以下逻辑:
如果 我有空或者你有空,并且天气好,就下楼去喂猫

一个解答是:

if 我有空 or 你有空 and 天气好:    print('去喂🐱')

但如果我们代入:

我有空 = True你有空 = False天气好 = False

天气不好,应该是不去喂猫的,但仍然会有输出。所以这个解答是错误的。

原因在于,代码会先计算出 你有空 and 天气好 的结果,再和 我有空 进行 or 运算,结果就是 True,条件满足。

在实际开发中,如果有类似拿不准的逻辑,建议加上括号来确保执行顺序,例如:

if (我有空 or 你有空) and 天气好:    


    
print('去喂🐱')

最后留给大家几个思考题,以下每一行代码的布尔值结果是多少?

bool(-1)bool('0')bool(" ")bool("") == False"" == False1 == True

对于 Python 中的逻辑运算,你还有什么想了解的内容?欢迎在留言区讨论。


以下是视频时间,欢迎大家关注、点赞、转发:



Crossin的第2本书《码上行动:利用Python与ChatGPT高效搞定Excel数据分析》已经上市了

点此查看上一本《码上行动:零基础学会Python编程》介绍

本书从 Python 和 Excel 结合使用的角度讲解处理分析数据的思路、方法与实战应用。不论是希望从事数据分析岗位的学习者,还是其他职业的办公人员,都可以通过本书的学习掌握 Python 分析数据的技能。书中创新性地将 ChatGPT  引入到教学当中,用 ChatGPT 答疑并提供实训代码,并介绍了使用 ChatGPT 辅助学习的一些实用技巧,给学习者带来全新的学习方式。


公众号的读者朋友们购买后可在后台联系我,加入读者交流群,Crossin会为你开启陪读模式,解答你在阅读本书时的一切疑问。


感谢转发点赞的各位~

_往期文章推荐_

Python入门|如何判断多个条件




如需了解付费精品课程教学答疑服务
请在Crossin的编程教室内回复: 666

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/161900