习题27
我直接给大家看我做的结果,其中有一行有两个答案,是我写错的,第二个答案为正确答案,再次提醒大家不要粗心大意,我就是粗心大意的错
True and True True
False and True False
1 == 1 and 2 ==1 False
"test"=="test" True
1==1 or 2 != 1 True
True and 1== 1 True
False and 0!=0 False
True or 1==1 True
"test"!="testing" True
"test"==1 False
not (True and False) True
not (1==1 and 0!=1) True False (这里是粗心犯的错)
not (10 ==1 or 1000 ==1000) False
not (1!= 10 or 3==4) False
not ("testing"== "testing" and "Zed" == "Cool Guy") True
1==1 and not ("testing" ==1 or 1 ==0) True
"chunky"=="bacon" and not (3==4 or 3==3) False
3==3 and not ("testing" == "testing" or "Python" == "Fun") False
我已经一次核对过,如果还有错误的话,请大家提醒我。
在本节结尾的地方我会给你一个理清复杂逻辑的技巧。所有的布尔逻辑表达式都可以用下面的简单流程得到结果:
1.找到相等判断的部分 (== or !=),将其改写为其最终值(True 或False)。
2.找到括号里的 and/or,先算出它们的值。
3.找到每一个 not,算出他们反过来的值。
4.找到剩下的 and/or,解出它们的值。
5.等你都做完后,剩下的结果应该就是 True 或者 False 了。
下面我们以 #20 逻辑表达式演示一下:
3 != 4 and not (“testing” != “test” or “Python” == “Python”)
接下来你将看到这个复杂表达式是如何逐级解为一个单独结果的:
1.解出每一个等值判断:
1.3 != 4为 True: True and not (“testing” != “test” or"Python" == “Python”)
2.“testing” != “test"为 True: True and not (True or"Python” == “Python”)
3.“Python” == “Python”: True and not (True or True)
2.找到括号中的每一个 and/or :
1.(True or True)为 True: True and not (True)
3.找到每一个 not 并将其逆转:
1.not (True)为 False: True and False
4.找到剩下的 and/or,解出它们的值:
1.True and False为 False
这样我们就解出了它最终的值为 False.
Warning复杂的逻辑表达式一开始看上去可能会让你觉得很难。而且你也许已经碰壁过了,不过别灰心,这些“逻辑体操”式的训练只是让你逐渐习惯起来,这样后面你可以轻易应对编程里边更酷的一些东西。只要你坚持下去,不放过自己做错的地方就行了。如果你暂时不太能理解也没关系,弄懂的时候总会到来
加分习题
1.Python 里还有很多和 !=、 ==类似的操作符. 试着尽可能多地列出 Python 中的等价运算符。例如 <或者 <=就是。
2.写出每一个等价运算符的名称。例如 !=叫“not equal(不等于)”。
我就写文中的吧
- and 为 与
- or 为 或
- != 为 不等于
- ==为等式两边相等
- not 为 非
3.在 python中测试新的布尔操作。在敲回车前你需要喊出它的结果。不要思考,凭自己的第一感就可以了。把表达式和结果用笔写下来再敲回车,最后看自己做对多少,做错多少。
我也简单做一个布尔逻辑表达式的演示
"chunky"=="bacon" and not (3==4 or 3==3)
1.解出每一个等值判断:
1,“chunky”==“bacon”为False:False and not(3==4 or 3==3)
2.3==4 为False: False and not(False or 3==3)
3.3==3 为True : False and not (False or True)
2.找到括号中的每一个 and/or :
1.False or True 为 True: False and not True
3.找到每一个 not 并将其逆转:
1.not True 为False: False and False
4.找到剩下的 and/or,解出它们的值:
1.False and False 为 False
所以答案为False
4.把习题 3 那张纸丢掉,以后你不再需要查询它了。