# 习题 28: 布尔表达式练习
上一节你学到的逻辑组合的正式名称是“布尔逻辑表达式(boolean logic expression)”。在编程中,布尔逻辑可以说是无处不在。它们是计算机运算的基础和重要组成部分,掌握它们就跟学音乐掌握音阶一样重要。
在这节练习中,你将在 python 里使用到上节学到的逻辑表达式。先为下面的每一个逻辑问题写出你认为的答案,每一题的答案要么为 True 要么为 False。写完以后,你需要将python 运行起来,把这些逻辑语句输入进去,确认你写的答案是否正确。
1. TrueandTrue
1. FalseandTrue
1. 1==1and2==1
1. "test"=="test"
1. 1==1or2!=1
1. Trueand1==1
1. Falseand0!=0
1. Trueor1==1
1. "test"=="testing"
1. 1!=0and2==1
1. "test"!="testing"
1. "test"==1
1. not(TrueandFalse)
1. not(1==1and0!=1)
1. not(10==1or1000==1000)
1. not(1!=10or3==4)
1. not("testing"=="testing"and"Zed"=="CoolGuy")
1. 1==1andnot("testing"==1or1==0)
1. "chunky"=="bacon"andnot(3==4or3==3)
1. 3==3andnot("testing"=="testing"or"Python"=="Fun")
在本节结尾的地方我会给你一个理清复杂逻辑的技巧。
所有的布尔逻辑表达式都可以用下面的简单流程得到结果:
1. 找到相等判断的部分 (== or !=),将其改写为其最终值 (True 或 False)。
1. 找到括号里的 and/or,先算出它们的值。
1. 找到每一个 not,算出他们反过来的值。
1. 找到剩下的 and/or,解出它们的值。
1. 等你都做完后,剩下的结果应该就是 True 或者 False 了。
下面我们以 #20 逻辑表达式演示一下:
~~~
3 != 4 and not ("testing" != "test" or "Python" == "Python")
~~~
接下来你将看到这个复杂表达式是如何逐级解为一个单独结果的:
1. 解出每一个等值判断:
1. 3!=4 为 True: Trueandnot("testing"!="test"or"Python"=="Python")
1. "testing"!="test" 为 True: Trueandnot(Trueor"Python"=="Python")
1. "Python"=="Python": Trueandnot(TrueorTrue)
1. 找到括号中的每一个 and/or :
1. (TrueorTrue) 为 True: Trueandnot(True)
1. 找到每一个 not 并将其逆转:
1. not(True) 为 False: TrueandFalse
1. 找到剩下的 and/or,解出它们的值:
1. TrueandFalse 为 False
这样我们就解出了它最终的值为 False.
Warning
复杂的逻辑表达式一开始看上去可能会让你觉得很难。而且你也许已经碰壁过了,不过别灰心,这些“逻辑体操”式的训练只是让你逐渐习惯起来,这样后面你可以轻易应对编程里边更酷的一些东西。只要你坚持下去,不放过自己做错的地方就行了。如果你暂时不太能理解也没关系,弄懂的时候总会到来的。
### 你应该看到的结果
以下内容是在你自己猜测结果以后,通过和 python 对话得到的结果:
~~~
$ python
Python 2.5.1 (r251:54863, Feb 6 2009, 19:02:12)
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> True and True
True
>>> 1 == 1 and 2 == 2
True
~~~
### 加分习题
1. Python 里还有很多和 != 、 == 类似的操作符. 试着尽可能多地列出 Python 中的等价运算符。例如 < 或者 <= 就是。
1. 写出每一个等价运算符的名称。例如 != 叫 “not equal(不等于)”。
1. 在 python 中测试新的布尔操作。在敲回车前你需要喊出它的结果。不要思考,凭自己的第一感就可以了。把表达式和结果用笔写下来再敲回车,最后看自己做对多少,做错多少。
1. 把习题 3 那张纸丢掉,以后你不再需要查询它了。
- 译者前言
- 前言:笨办法更简单
- 习题 0: 准备工作
- 习题 1: 第一个程序
- 习题 2: 注释和井号
- 习题 3: 数字和数学计算
- 习题 4: 变量(variable)和命名
- 习题 5: 更多的变量和打印
- 习题 6: 字符串(string)和文本
- 习题 7: 更多打印
- 习题 8: 打印,打印
- 习题 9: 打印,打印,打印
- 习题 10: 那是什么?
- 习题 11: 提问
- 习题 12: 提示别人
- 习题 13: 参数、解包、变量
- 习题 14: 提示和传递
- 习题 15: 读取文件
- 习题 16: 读写文件
- 习题 17: 更多文件操作
- 习题 18: 命名、变量、代码、函数
- 习题 19: 函数和变量
- 习题 20: 函数和文件
- 习题 21: 函数可以返回东西
- 习题 22: 到现在你学到了哪些东西?
- 习题 23: 读代码
- 习题 24: 更多练习
- 习题 25: 更多更多的练习
- 习题 26: 恭喜你,现在可以考试了!
- 习题 27: 记住逻辑关系
- 习题 28: 布尔表达式练习
- 习题 29: 如果(if)
- 习题 30: Else 和 If
- 习题 31: 作出决定
- 习题 32: 循环和列表
- 习题 33: While 循环
- 习题 34: 访问列表的元素
- 习题 35: 分支和函数
- 习题 36: 设计和调试
- 习题 37: 复习各种符号
- 习题 38: 阅读代码
- 习题 39: 列表的操作
- 习题 40: 字典, 可爱的字典
- 习题 41: 来自 Percal 25 号行星的哥顿人(Gothons)
- 习题 42: 物以类聚
- 习题 43: 你来制作一个游戏
- 习题 44: 给你的游戏打分
- 习题 45: 对象、类、以及从属关系
- 习题 46: 一个项目骨架
- 习题 47: 自动化测试
- 习题 48: 更复杂的用户输入
- 习题 49: 创建句子
- 习题 50: 你的第一个网站
- 习题 51: 从浏览器中获取输入
- 习题 52: 创建你的 web 游戏
- 下一步
- 老程序员的建议