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

if True or False and False:
print('1')
else:
print('2')

这个题目考察两个简单的知识点,一个是布尔运算,另一个是流程控制语句。结果是 1,我则选了2。

复盘我的解题思路。先是布尔运算部分,我把 True or False and False 的结果算成 False,于是代码简化为:

if False:
print('1')
else:
print('2')

我短暂发懵,后来回过神来,整理了一篇笔记《和35岁刘阿姨一起自测 Python 流程控制基本功》用于巩固基础功。

流程控制之if 分支控制语句,仅会执行条件为真的那个分支,所以上述代码段的结果为 2。然后这才发现,我错在布尔运算部分。在 xue.cn 网页上直接输入并运行True or False and False ,显示结果为 True

但我心算答案是 False

我是如何心算的呢?

  • True or False 等于 True
  • True and False 等于 False

布尔值仅有 TrueFalse 两个,布尔值操作符也仅有 与and, 或or, 非not 三个。我本来以为自己全部掌握,怎么还做错,而且还不知道错在哪儿?

最简单的运算,自测一下,我均已掌握,并无错漏。

太奇怪了,错在哪儿?想不明白,那就打开《自学是门手艺》的“入口”和“值及相应的运算” 两个章节,重复读布尔运算操作符部分,才发现关键是:

优先级最低的是或 or,然后是与 and, 优先级最高的是非 not

而上述心算时,我把 andor 视为同等优先级,并从左往右顺序计算。——务必留意:这个认识是错误的!这俩优先级不同!

True or False and False 的计算顺序,应该是:

  • 没有括号,也没有not,那就先算and
  • False and False 等于 False,现在语句是 True or False
  • 最后算 or,True or False 等于 True

再找个题目True and False or not True 自测一下:

  • 没有括号,最先算 notnot True 等于 False ,现在语句是True and False or False
  • 其次算 andTrue and False 等于 False,现在语句是 False or False
  • 最后算 orFalse or False结果是False

现在想想真的很奇怪,当初我是如何想当然地把 andor 视为同等优先级呢!——幸好还有机会能通过刷题发现自己的知识点错漏!

刷题翻车:python 布尔运算操作符的优先级的更多相关文章

  1. lintcode 刷题 by python 总结(1)

    博主之前在学习 python 的数据结构与算法的基础知识,用的是<problem-solving-with-algorithms-and-data-structure-using-python& ...

  2. lintcode 刷题 by python 部分链表题总结(2)

    本篇博客对最近做的链表的算法题做个简单的小结,主要描述题目和提供解题思路,具体代码见我的 github:https://github.com/MUSK1881/lintcode-by-python 3 ...

  3. 动态规划刷题集python代码

    1 爬楼梯(Fibonacci) #有一楼梯共M级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法? def fun(m): c = [0]*m c[0] = 1 c[1] = 2 for i ...

  4. python部落刷题宝学到的内置函数(二)

    感觉到刷题宝有一个好处,也许也不是好处,它的答案必须是真正输出的值,也就是说应该输出字符串aaaa的时候,答案必须写成界面上返回的值,即'aaaa'.有利于真正记忆返回值类型,但是....太繁琐了 1 ...

  5. python部落刷题宝学到的内置函数

    最近加入了python部落,感觉里面的刷题宝很有意思,玩了一下,知道了许多以前并不清楚的内置函数,然后感觉到快要记不住了,所以开始陈列一下 1.divmod(a,b):取a除以b的商和余数,功效等价于 ...

  6. 教你用python写:HDU刷题神器

    声明:本文以学习为目的,请不要影响他人正常判题 HDU刷题神器,早已被前辈们做出来了,不过没有见过用python写的.大一的时候见识了学长写这个,当时还是一脸懵逼,只知道这玩意儿好屌-.时隔一年,决定 ...

  7. Python中的操作符及优先级

    附注: 1.  Python中的按位运算符是把数字看作二进制来进行计算的.Python中的按位运算法则如下: 按位与   ( bitwise and of x and y ) &  举例: 5 ...

  8. Python 刷题笔记

    Python 刷题笔记 本文记录了我在使用python刷题的时候遇到的知识点. 目录 Python 刷题笔记 选择.填空题 基本输入输出 sys.stdin 与input 运行脚本时传入参数 Pyth ...

  9. python学习笔记七--数据操作符的优先级

    一.混合表达式哪个部分先计算: 1. 取决于操作符的优先级,不同操作符的优先级是不一样的,例如‘*’的优先级高于‘+’ 2. 上节的表格里越靠后,优先级越高. 3 . 同一表达式的相同操作符是按从左到 ...

随机推荐

  1. 从零开始搭建WebAPI Core_SqlSugar管理系统 (持续更新中......)

    从零开始搭建WebAPI Core_SqlSugar管理系统 前言 本系列皆在从零开始逐步搭建,后台管理系统服务端部分,后续还会推出前端部分. 这次的目的是搭出一个功能完善的 本次系列技术栈以下几个部 ...

  2. 色即是空,空即是色---java有关null的几件小事

    故事背景 ---摩诃般若波罗蜜多心经: 观自在菩萨,行深般若波罗蜜多时,照见五蕴皆空,度一切苦厄.舍利子,色不异空,空不异色:色即是空,空即是色.受想行识,亦复如是.舍利子,是诸法空相,不生不灭,不垢 ...

  3. pycharm 激活码 2019/11最新福利(2)

    812LFWMRSH-eyJsaWNlbnNlSWQiOiI4MTJMRldNUlNIIiwibGljZW5zZWVOYW1lIjoi5q2j54mIIOaOiOadgyIsImFzc2lnbmVlT ...

  4. 智慧金融时代,大数据和AI如何为业务赋能

    前言:宜信技术人物专访是宜信技术学院推出的系列性专题,我们邀请软件研发行业的优秀技术人,分享自己在软件研发领域的实践经验和前瞻性观点. 第一期专访我们邀请到宜信科技中心AI中台负责人王东老师,从大数据 ...

  5. ui自动化测试

    一.梳理 1.根据要求需要自动添加很多条数据 2.这就涉及到ui方面的知识.元素定位的方法(这个就能遇到很多坑,要完全掌握元素定位才能避免进坑).循环等(代码基础要掌握好) 二.操作 选择进行自动化操 ...

  6. 张高兴的 .NET Core IoT 入门指南:(五)串口通信入门

    在开始之前,首先要说明的是串口通信所用到的 SerialPort 类并不包含在 System.Device.Gpio NuGet 包中,而是在 System.IO.Ports NuGet 包中.之所以 ...

  7. 如何让excel文件读取变得更简单

    今天给大家安利一款excel文件导入神器,easyexcel,官方地址:(https://github.com/alibaba/easyexcel). 在官网文档中有介绍了其性能. 从上面的性能测试可 ...

  8. 10个比较流行的JavaScript面试题

    1.如何理解 JS 中的this关键字? JS 初学者总是对this关键字感到困惑,因为与其他现代编程语言相比,JS 中的这this关键字有点棘手. “this” 一般是表示当前所在的对象,但是事情并 ...

  9. web安全之XSS基础-常见编码科普

    0x01常用编码 html实体编码(10进制与16进制): 如把尖括号编码[ < ]  -----> html十进制: <  html十六进制:< javascript的八进制 ...

  10. 《锋利的jQuery》学习总结

    通过对<锋利的jQuery>(第二版)一书的学习,发现此书讲解通俗易懂,是学习jQuery的一本很好的指导书,特作如下总结.此书主要讲解了jQuery的常用操作,包括认识jQuery,jQ ...