“笨办法”学Python 3:布尔表达式练习

在编程中,布尔逻辑可以说是无处不在的。它们是计算机运算的基础部分,掌握它们就跟学音乐掌握音阶一样重要。

在这个习题中,将在Python里使用前一个习题中学到的逻辑表达式。先为下面的每一个逻辑问题写出你的答案,每一题的答案要么为True要么为False。写完以后,在终端中启动Python,录入这些逻辑语句,确认你写的答案是否正确。

1.True and True

2.False and True

3.1 == 1 and 2 == 1

4."test" == "test"

5.1== 1 or 2 != 1

6.True and 1 == 1

7.False and 0 != 0

8.True or 1 == 1

9."test" == "testing"

10.1 != 0 and 2 == 1

11."test" != "testing"

12."test" == 1

13.not (True and False)

14.not (1 == 1 and 0 != 1)

15.not (10 == 1 or 1000 == 1000)

16.not (1 != 10 or 3 == 4)

17.not ("testing" == "testing" and "Zed" == "Cool Guy")

18.1 == 1 and not ("testing" == 1 or 1 == 0)

19."chunky" == "bacon" and not (3 == 4 or 3 == 3)

20.3 == 3 and not ("testing" == "testing" or "Python" == "Fun")

在这个习题结尾的地方我会给你一种帮助你理清复杂逻辑的技巧。

所有的布尔逻辑表达式都可以用下面的简单流程得到结果。

1.找到相等判断的部分(==!=),将其改写为其最终值(TrueFalse)。

2.找到括号中的and/or,先算出它们的值。

3.找到每一个not,算出它们取反的值。

4.找到剩下的and/or,解出它们的值。

5.都做完后,剩下的结果应该就是True或者False了。

下面以第20个逻辑表达式演示一下:

3 != 4 and not ("testing" != "test" or "Python" == "Python")

接下来你将看到这个复杂的表达式是如何被逐级解为一个结果的。

1.解出每一个相等判断。

       a.    3 != 4为True: True and not ("testing" != "test" or "Python" 
              == "Python")
       b.    "testing" != "test"为True: True and not (True or "Python" == 
              "Python")
       c.    "Python" == "Python"为True: 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会话中得到的结果。

$ python3.6
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中的“相等运算符”,如<或者<=

2.写出每一个“相等运算符”的名称,如!=叫“不等于”。

3.在Python中测试新的布尔运算符。在按回车键前你需要说出它的结果。不要思考,凭自己的第一感觉就可以了。把表达式和结果用笔写下来再按回车键,最后看自己做对多少,做错多少。

4.把习题3中写的那张纸丢掉,以后你再也不需要查它了。

常见问题回答

为什么"test" and "test"返回"test",1 and 1返回1,而不是返回True呢?

Python和很多编程语言一样,都是给布尔表达式返回两个被操作对象中的一个,而非TrueFalse。这意味着,如果你写了False and 1,得到的是第一个操作数(False),而非第二个操作数(1),但如果你写的是True and 1,得到的是第二个操作数(1)。多做几个实验。

!=<>有何不同?

在Python中!=是主流用法,<>将被逐渐废弃,所以你应该使用前者,除此以外没什么不同。

有没有短路逻辑?

有的。任何以False开头的and语句都会直接处理成False,不会继续检查后面的语句。任何包含Trueor语句,只要处理到True,就不会继续向下推算,而是直接返回True了。不过,还是要确保你能理解整个语句,因为日后这会很有用。

本文摘自《笨办法学Python 3》

笨åæ³å­¦Python 3(å¼æ­¥å¾ä¹¦åºå)

在本书中,你将通过完成52个精心设计的习题来学会Python语言。阅读这些习题,照着录入代码(不要复制和粘贴!),修正自己的错误,观察程序的运行。在这个过程中,你将学会计算机的工作原理,知道怎样的程序才算是好程序,以及如何读、写和思考代码。作者还提供了5个多小时的视频,教你如何破坏、修正和调试代码,整个过程就像一边做题一边直播一样。一开始会很难,但很快你就会上手,并且会感觉很棒! 

本书适合以下人群阅读 
● 零编程经验的初学者 
● 了解一两门编程语言的初级人员 
● 多年未写过代码的转岗专业人员 
● 有丰富的编程经验,想通过快速、简单的速成课程了解Python 3的专业人员

猜你喜欢

转载自blog.csdn.net/epubit17/article/details/108435745