专栏首页小白程序猿第十一节、Python中布尔类型《Python学习》

第十一节、Python中布尔类型《Python学习》

我们已经了解了Python支持布尔类型的数据,布尔类型只有True和False两种值,但是布尔类型有以下几种运算:

与运算:只有两个布尔值都为 True 时,计算结果才为 True。

True and True # ==> True
True and False # ==> False
False and True # ==> False
False and False # ==> False

或运算:只要有一个布尔值为 True,计算结果就是 True。

True or True # ==> True
True or False # ==> True
False or True # ==> True
False or False # ==> False

非运算:把True变为False,或者把False变为True:

not True # ==> False
not False # ==> True

布尔运算在计算机中用来做条件判断,根据计算结果为True或者False,计算机可以自动执行不同的后续代码。

在Python中,布尔类型还可以与其他数据类型做 and、or和not运算,请看下面的代码:

a = True
print a and 'a=T' or 'a=F'

计算结果不是布尔类型,而是字符串 'a=T',这是为什么呢?

因为Python把0、空字符串''和None看成 False,其他数值和非空字符串都看成 True,所以:

True and 'a=T' 计算结果是 'a=T'
继续计算 'a=T' or 'a=F' 计算结果还是 'a=T'

要解释上述结果,又涉及到 and 和 or 运算的一条重要法则:短路计算。

1. 在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。

2. 在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。

所以Python解释器在做布尔运算时,只要能提前确定计算结果,它就不会往后算了,直接返回结果。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 第三节、数据类型《Python学习》

    Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等。

    申霖
  • 第十二节、Python创建list《Python学习》

    Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。

    申霖
  • TCP/UDP常见端口参考

    在网络技术中,端口(Port)大致有两种意思:一是物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端...

    申霖
  • Python3 三目运算符

    Python 中没有像 C 语言中一样直接使用 x?a:b 这样的三元表达式,但是它有两种替代方法:

    py3study
  • Python中的一些基础: 真值表

    为了便于看清,我用<=>来表示等价关系。 <=>左边表示逻辑表达式,<=>右边表示它的结果。

    py3study
  • 真值表

    逻辑判断是编程中极为常用的知识。之前的课我们已经说过,见第6课和第11课。但鉴于逻辑运算的重要性,今天我再把常用的运算结果总结一下,供大家参考。 这种被称为“真...

    Crossin先生
  • 刷题翻车:python 布尔运算操作符的优先级

    前两天在 xue.cn 体验答题挑战,我有道题做错了,却不明白错在哪里。题目大概如下,代码运行后将打印什么?

    刘娟娟PRESSone
  • 有趣的 Python 特性 4 | 碰到这种「链式」操作就要小心了。

    Python 提供了很多让使用者觉得舒服至极的功能特性,但是随着不断的深入学习和使用 Python,我发现其中存在着许多玄学的输出与之前预想的结果大相径庭,这个...

    Rocky0429
  • 数据猿专访昆仑数据CEO陆薇:工业互联网是“有墙花园”,“平地起高楼”不是其路径,厚积薄发才是

    陆薇表示:“消费互联网是开放草地,而工业互联网是有墙花园,前者是没有行业准入和特别领域的知识要求,后者有行业准入门槛和特别领域的知识要求;前者是纯线上,后者是线...

    数据猿
  • 面试算法:在海量数据中快速查找第k小的条目

    望月从良

扫码关注云+社区

领取腾讯云代金券