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

2022-09-29 10:37:32

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


逻辑运算与表达式

与运算、或运算

AB与运算 A and B或运算  A or B
0000
0101
1001
1111
运算规律全为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表达式。

  • 作者:Hann Yang
  • 原文链接:https://hannyang.blog.csdn.net/article/details/121000006
    更新时间:2022-09-29 10:37:32