布尔类型
布尔的介绍— “看似不起眼的日复一日,会在将来的某一天,突然让你看到坚持的意义”
在 Python 中布尔类型是用来 判断逻辑上的真假 ,通常应用于条件判断、循环控制和逻辑运算等场景。其对应的数据类型写法是 bool ,要注意的是,布尔值只有以下两个取值:
名称 | 写法 | 描述 |
---|---|---|
真 | True | 用于表示条件成立或为真的情况。 |
假 | False | 用于表示条件不成立或为假的情况。 |
另外要注意的是,True 和 False 的第一个字母必须是大写的。
布尔值在编程中非常重要,因为程序需要根据不同的条件做出决策来执行相应的操作,通过使用布尔值可以使程序更加智能和便于理解。
【背景】 布尔值由英国数学家乔治·布尔提出的,原本应用在高等数学中的布尔代数,后来广泛应用于计算机领域来实现程序控制。
在 Python 中,布尔值可以直接创建也可以通过逻辑判断生成,让我们来看几个例子:
# 直接赋值创建布尔变量
True
# 通过数学计算符来创建布尔值
100
> 99
# 通过其他判断符来创建布尔值
'牧'
in
'牧旗教程'
# 输出结果
print
(result1)print
(result2)print
(result3)运行程序,我们会得到如下的输出结果:
True
False
True
在上面例子的 result2 中,等号右侧是逻辑判断的数学公式,程序会先计算右侧式子的结果,然后通过 “等号” 将结果赋予给左侧的变量,根据数学知识我们知道 100 > 99 明显是错误的,所以将 False 这个结果赋予给了 result2 这个变量。
在 result3 中,用到了 in 这个逻辑判断词,这个关键词的意思是判断 in 前面的内容是否在后面的内容中,因为 “牧” 字存在于 “牧旗教程” 字符串中,所以返回的结果是 True 。
初学者第一次遇到 result2 = 100 > 99 这样的写法可能会陷入迷惑,要注意的是,我们在变量赋值的章节中学过,在 Python 中,“等号” 是赋值的意思 。
程序会先计算 “等号” 右侧的部分,在确保右侧已经计算到最后一步之后,再将结果赋值给左侧的变量。因此不要和数学概念中的 “等号” 弄混淆。
布尔值的创建
布尔值在后面的条件语句中应用非常广泛,除了上面教程中提到了两种创建布尔值的方式外,还有很多其他方常见的方法,让我们通过一个汇总表来做了解:
方式 | 描述 |
---|---|
直接赋值 | 通过直接将 True 或 False 赋值给一个变量来创建布尔值。 |
条件判断 | 通过比较来判断两者的关系,比如大小关系、是否相等、是否包含等。 |
单逻辑符运算 | 通过相同的逻辑符关键词 “与或非” 来对多个布尔值进行计算。 |
多逻辑符组合 | 通过不同的逻辑符关键词组合,按照特定顺序依次对多个布尔值进行计算。 |
在下面的教程中我会通过案例详细为大家讲解上面提到了几种创建方法:
-
直接赋值
直接赋值是最简单的创建布尔值的方式,使用 “等号” 将 True 或者 False 赋值给变量。
my_bool =True
-
条件判断
使用条件判断可以判断两个值的关系,比如大小关系、是否有包含关系、是否相等等。
方式 写法 描述 判断大小 > 、 >= 、< 、<= 和数学中的判断符号写法一样。 判断是否相等 == 双等于号用来比较是否相等。 判断是否不相等 != 冒号和等号组合用来判断两者是否不相等。 要注意的是,“==” 是两个等号组合,用来比较前后两者是否完全相同,如果相同则返回 True ,不相同返回 False , “!=” 与之相反,不相同返回 True ,相同返回 False
来通过一些示例加强理解,为了提高可阅读性,我在等号的右侧加上括号:
# 创建条件判断的式子
result1 = (1
>=5
)result2 = (5
==5
)result3 = (10
!=5
)# 输出结果
print
(result1)print
(result2)print
(result3)运行上面的代码,结果如下:
False
True
True -
单逻辑符运算
在 Python 中,逻辑符一共有三种,分别是与、或、非,用于对不同的布尔值进行组合,生成新的布尔值,进行复杂的逻辑判断。
方式 写法 描述 与 and 只有两个都是 True 的前提下,组合结果才是 True 。 或 or 只要有任何一个是 True ,组合结果就是 True 。 非 not 返回相反的布尔值,也就是不满足条件,结果就是 True 。 下面让我们结合一些案例,详细了解每个逻辑符:
① and 逻辑符
and 逻辑符,也叫 “与” 逻辑符,用于判断全部表达式是否都满足条件,如果所有的表达式都满足条件,也就是表达式的结果都为 True,那么使用 and 组合后结果也是 True 。
来看一个例子帮助理解,为了效果更加直观,我在 and 两侧加上括号,不影响结果:
# 创建三个变量
name ='牧旗教程'
school ='浙江大学'
age =27
# 将三个条件用 and 逻辑符组合起来,并且三个条件都符合
result1 = (age >20
)and
(len
(name) ==4
)and
('大学'
in
school)# 将三个条件用 and 逻辑符组合起来,并且其中有一个条件不符合
result2 = (age >30
)and
(len
(name) ==4
)and
('大学'
in
school)print
(result1)print
(result2)运算上面的代码,结果输出如下:
True
False在 result1 中,年龄、姓名的长度以及学校名称中是否带 “大学” 这三个条件都满足条件,也就是表达式的结果都为 True ,那么表达式用 and 逻辑符连接后的最终结果也是 True 。
在 result2 中,年龄大于 30 岁这个条件是不符合的,也就是说 age > 30 这个表达式的运算结果为 False ,在这种情况下,无论其他表达式的结果是什么,用 and 逻辑符连接后的最终结果一定是 False 。
② or 逻辑符
or 逻辑符,也叫做 “或” 逻辑符,只要有任何一个表达式满足条件,那么用 or 逻辑符连接后的运算结果就是 True 。
来通过一个例子帮助理解:
# 创建三个变量
name ='牧旗教程'
style ='免费'
fans =13000
# 将三个条件用 or 逻辑符组合起来,只有一个条件符合
result1 = ('厨艺'
in
name)or
(style =='免费'
)or
(fans >20000
)# 将三个条件用 or 逻辑符组合起来,三个条件都不符合
result2 = ('园艺'
in
name)or
(style =='收费'
)or
(fans >20000
)print
(result1)print
(result2)结果如下:
True
False在 result1 中,三个条件中只有一个条件满足,也就是说只有一个表达式的结果是 True ,因为是用 or 连接的三个条件,所以只要有一个条件满足,那么结果就是 True 。
在 result2 中,经过计算可知,三个条件均不满足,三个表达式的结果都是 False ,所以用 or 连接后的结果也只能是 False 。
③ not 逻辑符
not 运算符是不满足这个条件才能返回 True ,也可以理解为对布尔值进行取反操作。
来看一个例子帮助理解:
# 创建一个变量,这个人有吸烟的习惯
smoke =True
# 规则是吸烟禁止入内
condition =not
smoke# 输出结果
print
(condition)结果如下:
False
可以看出,这个人有吸烟的爱好 ,但是规定的条件 condition 是 not smoke ,也就是说如果吸烟是 True ,那么返回的结果是 False ,也就是这个人不满足条件。
-
多逻辑符组合
在 Python 中经常会出现逻辑符组合使用的情况,遇到这种情况需要遵循一定的优先级计算顺序,下面是程序在计算时会遵循的优先级:
优先级 名称 由最高 括号 (和数学中的一样,括号的优先级永远最高) ↓ 乘法 ( * ) 、 除法 ( / ) 、 取整 ( // ) 、 取余 ( % ) ↓ 加法 ( + ) 、 减法 ( - ) ↓ 是否相等 ( == ) 、 是否不相等 ( != ) ↓ 非运算符 ( not ) ↓ 与运算符 ( and ) 到最低 或运算符 ( or ) 让我们通过一个例子来深入了解顺序优先级的运作方式:
如果满足如下条件 : 天气晴朗且是周末 ,或者没有重要的事情处理。那么结果就是 True 。
# 创建三个变量,分别代表晴天、周末、重要任务
sunny_day =True
weekend =False
import_task =False
# 搭建组合条件
result = sunny_dayand
weekendor
not
import_task# 输出结果
print
(result)结果如下:
True
我们来分析一下这个组合方式发生了什么,由优先级表可知,由于 not 的优先级高于 and 和 or ,所以程序会先计算 not import_task 的结果,结果为 True ,接下来查询优先级表发现 and 的优先级高于 or ,因此程序会计算 and 两侧的结果,结果是 False ,最后再计算 or 两侧的 False 和 True ,得出结果是 True 。
在后面的教程中,尤其是判断语句和循环语句中,布尔类型会经常出现,所以笔者建议在这一节一定要打好基础,才不至于在后面的学习中陷入误区。
关注公众号【牧旗教程】,回复“更多例题”,获取更多题型进行训练~
您的打赏将帮助维护网站服务器的正常运营,并为作者的后续更新提供更多的动力。
Copyright © 2013-2023 Muqi Course. All Rights Reserved. 牧旗教程 版权所有 京ICP备2023029281号