大家好呀,上个练习我们记忆了一些逻辑表(说实话那么简单也没啥好记的哈哈),这节课我们做一些逻辑练习。由于没有什么系统的代码,也没有什么地方要交代的,所以我就把原文搬过来了,只在某些地方加了一些注释。大家先看着练习把答案写在纸上,然后在终端里运行 Python,再一行一行通过交互的方式得出答案,看跟自己写得一样不一样。
仔细一点儿,肯定能全对~
练习 28 布尔练习
我们上个练习所学的逻辑组合叫做“布尔”逻辑表达(Boolean logic expressions)。布尔逻辑在编程中无处不在。它是数学计算的基础模块,掌握它就跟掌握音乐里面的音阶一样重要。
在这个练习中,我们将试着在 Python 中运用上个练习中所记忆的逻辑表。给以下每一个逻辑问题写下你认为的答案,要么是 True,要么是 False。把答案写下来之后,再在终端里运行 Python,输入每个逻辑问题,来确认你的答案是否正确。
下面是一个小诀窍,可以帮你解决更复杂的问题。
不论何时,当你看到布尔逻辑表达式,你可以通过以下简单的几步来解它们:
把每一个相等性测试(== 或者 !=)替换成真实性测试(也就是先判断等式的对错)。
再解决圆括号里面的 and/or。
找到每一个 not,然后把它变过来。
找到剩余的 and/or,然后判断。
完成后,你应该得到 True 或者 False。
用一个变量来说明:
3 != 4 and not ("testing" != "test" or "Python" == "Python")
以下是分解的每一步逻辑运算的过程:
1. 先解决每一个相等性测试:
3 != 4 是 True: True and not ("testing" != "test" or "Python" == "Python";
"testing" != "test" 是 True: True and not (True or "Python" == "Python");
"Python" == "Python": True and not (True or True);
2. 找到圆括号里的每一个 and/or:
(True or True) 是 True: True and not (True)
3. 找到每一个 not,然后把它转换过来:
not (True) 是 False: True and False
4. 找到其他剩余的 and/or 然后解决它们:
True and False 是 False。
这样我们就完成了这个测试,并且知道结果是 False。
你会看到
写完你自己的答案后,再用终端运行 Python,通过输入这些逻辑表达式来查看答案,这是你可能会看到的结果:(注:老肖没展示完,剩余部分大家自行练习自行核对)
附加练习
Python 中有很多类似于 和 的运算符,试着尽可能多地找到这类“比较运算符”( equality operators),比如 或者 。
写下这些比较运算符的名字,比如我们把 叫做“不等于”。
在 Python 中输入新的布尔运算,在你敲下回车之前先把答案说出来,别思考,说出你脑子里第一个冒出来的答案。写下来,然后敲回车。算一算你对了多少,错了多少。
记完把纸扔掉,防止你下次再用。
常见问题
为什么 "test" and "test" 返回的是 test,1 and 1 返回的是 1 而不是 True?Python 和其他很多语言喜欢返回布尔表达式的运算数而不只是 True 或者 False。也就是说,如果是 False and 1,你会得到第一个运算数(False),如果是 True and 1,你会得到第二个运算数(1),试着玩玩这个。
和 有区别吗?Python 已经不提倡使用 ,而是更多地使用 ,除此之外,二者没有任何区别。
有捷径吗?有,任何包含一个 False 的 and 表达式结果都是 False。任何包含一个 True 的 or 表达式结果都是 True。但是你要掌握处理整个表达式的过程,后面会用到。
好好学习|天天进步
公众号ID:xuexiier
领取专属 10元无门槛券
私享最新 技术干货