Python少儿编程小课堂(三)
入门篇(3)比较运算和逻辑运算


运算符(2)

上一节课讲了算术运算符和赋值运算符,本节继续讲其它运算符:

比较运算符

==、!=、>、<、>= 、<= 

大于<、小于> 最好理解,和数学里的不等号相同。
>=和<= 分别对应数学中的大于等于≥和小于等于≤。
==和 != 分别对应数学中的等于=和 不等于 ≠。

a == b 用双等号表示两个操作数是否相等,是为区别赋值运算的单个等号。

连续比较运算

和连续赋值一样,Python同样允许比较做连续运算,这让比较更像是一个数学表达式。如:

0 < a < 5,   0 <= b < 3,  8 <= c <= 9, 0 < a + b < c, ... 都是合法的比较运算。

比较运算的结果

是一个布尔型的值,要么是True,要么就是 False。

若: a = b = 2; c = 1; d = 0

则: a == b、a>c、a+b>c+d、b==c*2、b>=c+d  ,值为True
   a > b、b<c+d、a+c<=b、a+b+c<=3、a//b != c, 值为False

逻辑运算符

and、or 、not  分别称为: 逻辑与、逻辑或、逻辑非,简称:与、或、非。

逻辑运算中, 1 == True, 0 == False


逻辑运算与表达式

与运算、或运算

A B 与运算 A and B 或运算  A or B
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 1
运算规律 全为1才为1,有1个0就为0 全为0才为0,有1个1就为1

注:就是因为这些规律,在逻辑代数运算被称为逻辑乘运算被称为逻辑加。是不是很形像?  0乘任何数都为0;1加任何数都为1。

非运算

not 1 = 0
not 0 = 1
not True = False
not False = True

运算优先级

not > and > or

连续比较的等价算式:

0 < a < 5,  等价于 a>0 and a<5
0 <= b < 3, 等价于 b>=0 and b<3
8 <= c <= 9, 等价于 c>=8 and c<=9
not 1 < a < 5, 等价于 a <= 1 or a>=5

条件表达式 condition

由比较运算或逻辑运算,或者它们的混合运算组成的表达式。

例1: 三条线段长度分别为a,b,c,能够组成三角形的必要条件:

a + b > c and b + c > a and c + a > b ,即任意两边之和大于第三边。

例2: 以下两个条件表达式,在当n为整数时完全等价:

n == 1 or n == 2 or n == 3 or n == 4
1 <= n <= 4

例3: 一个三位整数n,个位十位百位上至少有一个1的条件表达式为:

n // 100 == 1 or n // 10 % 10 == 1 or n % 100 == 1


扩展阅读: 

逻辑运算定律

把条件表达式condition看作一个变量A,它的值只有1或0,我们称A为“逻辑变量”。

零一律

A and 0 = 0        A or 0 = A

A and 1 = A        A or 1 = 1

重叠律

A and A = A        A or A = A

互补律

A and not A = 0        A or not A = 1

还原律

not not A = A

交换律

A and B = B and A        A or B = B or A

结合律

A and (B and C) = (A and B) and C

A or (B or C) = (A or B) or C

分配律

A and (B or C) = A and B or A and C

A or B and C = (A or B) and (A or C)

前面一个式子很容易想到,后一个式子要转2个弯:

A or B and C = A and (1 or B or C) or B and C
= A and A or A and B or A and C or B and C
= (A or B) and (A or C)

反演律

not (A and B) = not A or not B

not (A or B) = not A and not B

反演律又称“摩根定律”、“德·摩根定律”。

吸收律

A or A and B = A        A and (A or B) = A

吸补律

A or not A and B = A or B

有没有注意到交换律、结合律、分配律(1)与代数中的运算律十分相像。

混合运算

与非运算

not ( A and B)

或非运算

not ( A or B)

与或非运算

not ( A and B or C and D)

异或运算

A and not B or not A and B , AB不相等结果为1。

1 and not 0 or not 1 and 0 = 1
0 and not 1 or not 0 and 1 = 1
1 and not 1 or not 1 and 1 = 0
0 and not 0 or not 0 and 0 = 0

同或运算

A and B or not A and not B, AB相等结果为1。

1 and 0 or not 1 and not 0 = 0
0 and 1 or not 0 and not 1 = 0
1 and 1 or not 1 and not 1 = 1
0 and 0 or not 0 and not 0 = 1

两个逻辑变量A和B的异或运算和同或运算是互补关系。
可以理解为“异或非”即同或;“同或非”即异或。
Python没有定义异或和同或运算,在逻辑代数中分别表达为:A⊕B 、A⊙B。


【复习思考题】

1.  一个整数n,判断它是奇数或者偶数的条件表达式分别是什么?

2. 一个三位整数n,写出它在个位十位百位上至少有两个1的条件表达式。

3. 已知 max(a, b)表示a,b之大者,怎么表示三角形三边的必要条件?

4.*证明吸收律、吸补律的正确性。

5.*写出 A⊕B⊕C 的Python表达式。

Python少儿编程入门篇(3)比较运算和逻辑运算相关推荐

  1. ​​Python少儿编程入门篇(2)算术运算和赋值运算

    Python少儿编程小课堂(二) 入门篇(2)算术运算和赋值运算 标识符 就是一个名字,就好像我们每个人都有自己的名字一样,主要作用就给变量.函数.类.模块以及其他对象起名字. 命名规则 1. 标识符 ...

  2. Python异步编程入门篇

    本人很懒,不想详细些过程,后续会更新代码也许,具体文章推荐链接 ---------深入理解Python异步编程-----–

  3. 猿编程python代码_程序猿编程课堂 Python学习之入门篇3:简单的数据类型

    1. 什么是数据类型? 我们知道编程就是编写程序解决某个问题,而任何能使用编程来解决的问题都是能够提取或者转换出相应的数据,只是数据的表达形式是不一样的,而这表达形式就是数据类型. 比如,数学中的数字 ...

  4. python机器人视觉编程——入门篇(下)

    目录 1 全篇概要 2 图像的读取与运算基础 2.1图像的读取 2.1.1 从磁盘的图像(.jpg,.npg,.gif等等)读取 2.1.2 从摄像头里读取图像 2.2图像的运算 2.2.1 图像的数 ...

  5. 程序猿编程课堂 Python学习之入门篇1:环境搭建与第一个程序

    前言: Python作为目前比较热门的编程语言,其简单和简洁的语法使它成为一种非常好的通用编程语言,它是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),并且随着版本的不断更新和 ...

  6. python交互式编程入门先学什么_为什么 Python 对于编程入门学习来说,是一门很棒的语言...

    在这篇文章里,我会来阐述下为什么我觉得 Python 对于计算机编程入门教学来说是一门很棒的编程语言(对基础编程课程更多观点可以查看这篇文章).这也是从我针对初学者Python 编程教学过程中获得并总 ...

  7. Python基础语法入门篇(一)

    Python基础语法入门篇(二) 1. 注释 在我们工作编码的过程中,如果一段代码的逻辑比较复杂,不是特别容易理解,可以适当的添加注释,以辅助自己 或者其他编码人员解读代码. 注释是给程序员看的,为了 ...

  8. MAYA API插件编程--入门篇

    MAYA API插件编程--入门篇 作者:华文广          日期:2010.11.28 我们知道,MAYA是一个基于结点的插件式软件架构,这种开放式的软件架构是非常优秀的,它可以让用户非常方便 ...

  9. 做python少儿编程教程-超好玩的Python少儿编程

    1. 作者有14年的计算机培训经验,能抓住青少年的学习心理.2. 超过180分钟的视频讲解,可下载也可扫码直接观看. <超好玩的Python少儿编程>是写给青少年读者的编程学习用书,主要通 ...

最新文章

  1. Linux shell 学习笔记(15)— shell 正则表达式
  2. maven项目update报错
  3. SQL点滴5—产生时间demention,主要是时间转换
  4. Katana-CookieAuthenticationMiddleware-源码浅析
  5. C语言对内存地址的封装
  6. Linux系统下MySQL数据库的超级管理员root的密码忘记/忘记密码怎么办?
  7. postscript打印机什么意思_涨知识|你不知道的关于打印机的打印过程和打印机驱动的那些事...
  8. 小米路由器 梅林_WIFI6真的有用吗?小米ALOT路由器AX3600上手体验!小米智能家居生态之选及选购分析...
  9. 不懂函数式?用mobx来写react应用吧
  10. aix oracle版本查看命令,AIX 常用命令
  11. iCollections 7 for Mac(桌面整理工具)
  12. 并发重复请求,这才是优雅的处理方式!
  13. 18.Linux/Unix 系统编程手册(上) -- 目录与链接
  14. covar of lognormal variables
  15. kaldi-关键词识别kws
  16. android 虚拟按键自定义,Android手机底部栏虚拟按键的操作
  17. C语言基础 数字统计
  18. oracle快照方案,【DBA及开发必备】全解ORA-1555快照太旧错误原理及解决方案
  19. iOS 浏览相册功能实现 —— HERO博客
  20. 散列算法和数字签名笔记

热门文章

  1. Chen系统的有限时间驱动-响应同步
  2. java调用Cplex:添加约束
  3. LTE笔记(二):OFDM在上行 / 下行链路中的应用
  4. impala的This could be due to stale metadata.问题
  5. android 仿小米日历 周视图 月视图切换
  6. 手工实现IE历史记录复制(转)
  7. Java B组蓝桥杯第八届国赛:生命游戏
  8. R与RStudio安装与学习(一)
  9. 一周碎碎念,2021.11.7,两个MGR集群间还可以构建传统的主从复制通道吗
  10. python画条形图