原文链接:http://learnpythonthehardway.org/book/ex28.html
上一次练习的逻辑组合称为“布尔型”逻辑表达式。布尔型逻辑表达式被广泛的应用与程序中。它们是逻辑运算的基础组成部分,掌握它就好比掌握了音乐中的音阶一样。
在这次的练习中你将用到你逻辑练习中记住的东西并且要把它们应用在Python中。对于每一个逻辑问题你先写下你认为的答案。这里的每个问题的答案不是True就是False。一旦你写下问题的答案,你就去终端启动Python来执行对应的语句,将其输出的结果和你回答进行比较确认。
#ps: 注释内容是我认为的答案
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" #False
1 != 0 and 2 == 1 #False
"test" != "testing" #True
"test" == 1 #False
not (True and False) #Ture
not (1 == 1 and 0 != 1) #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或者Falsed的结果。
我将用下面这个示例来展示这个过程:
3 != 4 and not ("testing" != "test" or "Python" == "Python")
这里我按照上述步骤一步一步来进行转换直到得到最后的结果:
1.解决每一个相等判断:
1> 3 != 4 is True: True and not ("testing" != "test" or "Python" == "Python")
2> "testing" != "test" is True: True and not (True or "Python" == "Python")
3> "Python" == "Python": True and not (True or True)
2.找到每个圆括号中的 and/or:
1> (True or True) is True: True and not (True)
3.找到没有给not ,算出它们的相反值:
1> not (True) is False: True and False
4.找到余下的任何 and/or ,算出它们的值:
1> True and False is False
从上面可以得到最后的结果为 False。
警告:
对于像上面这样比较复杂的逻辑表达式开始看起可能非常难。而且你也许已经碰壁过了,不过别灰心,这些“逻辑体操”式的训练只是让你逐渐习惯起来,这样后面你可以轻易应对编程里边更酷的一些东西。只要你坚持下去,不放过自己做错的地方就行了。如果你暂时不太能理解也没关系,弄懂的时候总会到来的。
输出结果如下:
以下内容是在你自己猜测结果以后,通过和 python 对话得到的结果:
E:\>python
Python 2.7.3 (default, Apr 10 2012, 23:24:47) [MSC v.1500 64 bit (AMD64)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> True and True
True
>>> 1 == 1 and 2 == 2
True
研究训练:
1、在Python中有很多类似 != 和 ==的操作符。试着尽可能找出多的这种“等价运算符”。例如像 < 和 <=就是。2、写成每一个这种等价操作符的名称。例如 ,!= 叫作“不等于”。
3、在Python中试着测试这些新的布尔操作符,在你单击回车前试着大声喊出它的结果。不要去深思熟虑,喊出你脑海中第一个蹦出来的结果。把结果写下来,然后单击回车键,并且记下你错了多少和对了多少。
4、把习题 3 那张纸丢掉,以后你不再需要查询它了。