Exercise 28: 布尔型练习

原文链接: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 那张纸丢掉,以后你不再需要查询它了。

学生遇见的常见问题:


为什么 “test" and "test" 返回 ‘test' 还有 1 and 1 返回 1而都不是返回 True呢?
答:Python和许多其他语言相对只是返回布尔表达式的Ture 或者 False更喜欢返回表达式中的操作对象。这就意味着你如果运算 False and 1 那么你将得到第一个操作对象(False)但是如果你运算 True and 1  你就会得到第二个操作对象(1)。你可以自己尝试一下。

!= 和 <>有什么不同?
答:Python中已经放弃使用 <>操作符,而更钟情于 != ,所以你就使用 != 。其他就没有什么不同了。

学习这些有没有捷径?
答:有的,任何 and 逻辑表达式中只要有一个 False 那么它就是False ,你就不需要去判断后面的。在任何 or 的逻辑表达式中只要有个 True 那么他就是 True,同样不需要去看后面的了。但是你得确认你能够处理整个表达式,因为在后面学会处理这些会非常有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值