这是《Python入门经典以解决计算问题为导向的Python编程实践》65-73页的内容,是对上一篇内容的补充,主要讲了布尔运算符。
深入控制语句
- 1、布尔变量
- 2、关系运算符
- 3、布尔运算符(逻辑运算符)
- 4、优先级
- 自测练习
1、布尔变量
布尔值:True(真)、Flase(假)
注意:首字母一定要大写
由于计算机硬件只能存储1和0,因此布尔值True另存为1,False另存为0。更一般地,认为零值对象是False,认为任何非零值对象是True。此外,认为任何空对象(例如空字符串)都是 False。
2、关系运算符
布尔表达式有关系运算符组成,其运算结果为真或假。
要注意“=”是赋值运算符,“==”才是等于运算符。
关系运算符使用时避免两种不同类型的比较。
在Python中,实际上存在两种不同的相等:。
(1)两个不同的名字关联的对象,具有相同的值。如
a=2 b=2 那么a=b
可以使用“ == ”来检验是否有相同的值
(2)两个不同的名字与同一个对象(即具有相同ID的对象)关联。
a=2 b=a 那么a和b关联同一个对象,只是名字不同,所以值是相等的。
可以使用“is”来检验是否关联同一个对象。
浮点数的相等:
浮点数是实数的近似值。在计算时,有可能发生四舍五入的情况。
以下例子中,两个式子从数学角度看是相等的,但在Python中是不相等的。
这里要判断浮点数是否相等,就要检查他们的差值是不是非常小。如下图。差值足够小,就判定两个浮点数是相等的。
关系运算符链
在Python中,关系表达式链和数学中的计算方式相同。(许多编程语言不是)
例如:a大于或等于0且小于等于5,可以直接写成:
0<=a<=5。如果a=3,结果为True。如果a=6,结果为Flase。
3、布尔运算符(逻辑运算符)
布尔运算符有:and or not
相当于数学中的与、或、非
(1)p and q
特点:需要两个都是真的时候才是真的,否则为假。
(一假即假)
p | q | p and q |
---|---|---|
真 | 真 | 真 |
真 | 假 | 假 |
假 | 真 | 假 |
假 | 假 | 假 |
(2)p or q
特点:两个值只要有一个是真的就是真的。
(一真即真)
p | q | p or q |
---|---|---|
真 | 真 | 真 |
真 | 假 | 真 |
假 | 真 | 真 |
假 | 假 | 假 |
(3)not q
特点:得到原来的值的相反值。
q | q |
---|---|
真 | 假 |
假 | 真 |
结合布尔表达式和布尔运算符:
a=5
(0<=a) and (a<=5)
(0<=5) and (5<=5)
True and TrueTrue
a=3
(a>2) or (a>5)
(3>2) or (3>5)
True or FlaseTrue
and的运算优先级高于or
True and False or True and Flase
(True and False) or (True and Flase)Flase or FlaseFlase
4、优先级
运算符 | 说明 |
---|---|
() | 括号(最高级) |
** | 幂运算 |
+x,-x | 正负 |
* / // % | 乘 除 整除 求余 |
+ - | 加、减 |
< <= > >= == != | 比较运算符 |
not x | 非 |
and | 与 |
or | 或 |
自测练习
【参考答案】
(a)①1②2③10④20
(b)①0②0③20④20
(c)
当两个数都和10相差5的n倍,且第一个数大于第二个数时。