引子:

>>> print '' or 5 or 0
5
>>> print 5 and 4
4
>>> print '' or 5 or 0 and 4
5

出现以上情况的原因是什么呢?

bool('') == False bool(0) == False
所有变量的位操作都是通过强制转换成bool实现的,并且表达式的值是从左到右第一个能够确定表达式的值的变量。
例如 (‘’ or 5 or 0)==(False or True or False),当遇到第一个True的时候,表达式的值等于True这个变量(5)的值,并且不会再去管后面是什么,所以返回5.
1. 在纯and语句中,如果每一个表达式都不是假的话,那么返回最后一个,因为需要一直匹配直到最后一个。如果有一个是假,那么返回假
2. 在纯or语句中,只要有一个表达式不是假的话,那么就返回这个表达式的值。只有所有都是假,才返回假
3. 在or和and语句比较难表达,总而言之,碰到and就往后匹配,碰到or如果or左边的为真,那么就返回or左边的那个值,如果or左边为假,继续匹配or右边的参数。

(False or 1)  输出1

(1 or False)    输出1

(True or 1)输出前者

(1 or True)   输出前者

(True and 1) 输出后者

(1 and True)    输出后者

(False and 1)输出False

(1 and False)  输出False

对python而言

其一, 在不加括号时候, and优先级大于or

其二, x or y 的值只可能是x或y. x为真就是x, x为假就是y

第三, x and y 的值只可能是x或y. x为真就是y, x为假就是x

显然,

对于, 1 or 5 and 4: 先算5 and 4, 5为真, 值为4. 再算1 or 4, 1 为真,值为1

对于, (1 or 5) and 4: 先算1 or 5, 1为真, 值为1. 再算1 and 4, 1为真,值为4

在Python中,空字符串为假,非空字符串为真。非零的数为真。

数字和字符串之间、字符串之间的逻辑操作规律是:

对于and操作符:

只要左边的表达式为真,整个表达式返回的值是右边表达式的值,否则,返回左边表达式的值

对于or操作符:

只要两边的表达式为真,整个表达式的结果是左边表达式的值。

如果是一真一假,返回真值表达式的值

如果两个都是假,比如空值和0,返回的是右边的值。(空值或0)

总结一句话就是:无论操作符是哪个,最后的结果一定是按照计算顺序能最快判断出结果的那个表达式决定的

举例:

<img src="https://pic2.zhimg.com/v2-9d62f6dc2dacc24a2b572a3066c96d91_b.png" data-rawwidth="423" data-rawheight="351" class="origin_image zh-lightbox-thumb" width="423" data-original="https://pic2.zhimg.com/v2-9d62f6dc2dacc24a2b572a3066c96d91_r.png">

Python 里 and、or 的计算规则相关推荐

  1. python中and怎么计算_Python中 and,or 的计算规则

    一.纯 and 和 or 语句 1. 在纯and语句中,如果每一个表达式都不是假的话,那么返回最后一个,因为需要一直匹配直到最后一个.如果有一个是假,那么返回假 2. 在纯or语句中,只要有一个表达式 ...

  2. python 克里金空间插值_Python克里金(Kriging)插值计算及可视化绘制

    前面两篇推文我们分别介绍了使用Python和R进行IDW(反距离加权法) 插值的计算及结果的可视化过程,详细内容可见如下: 本期推文,我们将介绍如何使用Python进行克里金(Kriging)插值计算 ...

  3. 全面对比 MATLAB、Julia、Python,谁在科学计算中更胜一筹?

    数百种编程语言,各有优劣,各自也都有自己最为适用的场景.那么就科学计算领域而言,主流的 MATLAB.Julia.Python 会有哪些最为独特的优势呢?又存在哪些让开发者无力的缺陷?在本文中,我们将 ...

  4. css优先级计算规则

    2019独角兽企业重金招聘Python工程师标准>>> 最近面试了一些求职者,我问css优先级计算规则是怎样的?答曰ID优先级>class>元素选择器,外联样式优先级低于 ...

  5. 九大神招,让Python里数据分析神器Jupyter,完美升华

    九大神招,让Python里数据分析神器Jupyter,完美升华 Notebook作为一款经典的交互式编辑器,在视图数据等实时展示方面有其特有的优势,但是相比pycharm.sublime等编辑工具,J ...

  6. python 对比matlab_全面对比 MATLAB、Julia、Python,谁在科学计算中更胜一筹?

    原标题:全面对比 MATLAB.Julia.Python,谁在科学计算中更胜一筹? 数百种编程语言,各有优劣,各自也都有自己最为适用的场景.那么就科学计算领域而言,主流的 MATLAB.Julia.P ...

  7. n维椭球体积公式_混凝土工程量计算规则及公式

    ▶下载微试验APP ▶发布招聘 点击进入"微试验_视频课件+题库复习+模拟考试"学习 混凝土垫层工程量计算规则及公式 1.条形基础砼垫层计算公式  外墙条基砼垫层体积=外墙条形基础 ...

  8. python 科学计算基础教程电子版-自学Python 编程基础、科学计算及数据分析

    自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 自学Python 编程基础.科学计算及数据分析 epub pdf mobi txt 下载 ☆☆☆☆☆ 李金 著 ...

  9. python nlp包_StanfordNLP,让你在 Python 里一手掌握 53 种自然语言分析

    发表日期:2019-06-12 StanfordNLP,让你在 Python 里一手掌握 53 种自然语言分析 -- 不久之前,斯坦福大学公开了它最新的自然语言处理代码库-- StanfordNLP. ...

  10. Python里的dict和set的背后小秘密

    Python里的dict和set的效率有多高? 为什么它们是无序的? 为什么并不是所有的Python对象都可以当作dict的键或set里的元素? 为什么dict的键和set的元素的顺序是根据它们被添加 ...

最新文章

  1. Oracle系统表查询
  2. Python爬取京东商品信息以及评论存进MySQL
  3. 【每周CV论文推荐】 初学深度学习人脸识别和验证必读文章
  4. JZOJ 3807. 【NOIP2014模拟8.25】地砖铺设
  5. oracle 的进程
  6. 【数据结构与算法】双链表的Java实现
  7. py程序员写代码的习惯养成 防止想到什么写什么
  8. [Ajax] Ajax的基本用法
  9. leetcode 1160 python
  10. 跑路后再删库?思科前员工离职后恶意删库,损失达 240 万美元!
  11. php server(),php的$_SERVER参数详解(附实例)
  12. PHP处理数据为echarts多条折线图格式
  13. Linux内核分析与驱动编程-1
  14. Protel常用封装库
  15. idea java maven 打包,idea maven项目 基于idea自己打包方式 以及使用maven插件打包的三种方式...
  16. Unable to find a single main class from the following candidates 。。。
  17. 精通css网页布局 pdf,精通CSS网页布局
  18. 如何查看本机flash版本
  19. java gwt开发_java – 如何启动GWT超级开发模式
  20. 分形蕨( fractal fern)

热门文章

  1. Java FileNameFilter示例
  2. 终端IO--unix环境高级编程读书笔记
  3. C++开发语言的特点及工作原理
  4. 【Objective-C】Objective-C语言的动态性
  5. 设计模式-命令模式(Command)
  6. php curl上传文件$_FILES为空问题
  7. OSG 实现跟随节点的相机(转)
  8. DELL-S4810恢复出厂配置
  9. 程序员面试金典——17.6最小调整有序
  10. Leetcode 200.岛屿数量