查看原文
其他

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

Crossin先生 Crossin的编程教室 2024-03-28

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

请访问: 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

继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存