首页 > Python资料 博客日记
一文搞懂 Python 3 中的布尔类型
2024-07-03 10:00:04Python资料围观129次
介绍
布尔数据类型可以是两个值之一,即True(真)或False(假)。在编程中,我们使用布尔值进行比较,并确定给定程序的控制流程。
布尔值表示与数学逻辑分支相关的真值,这影响计算机科学中的算法。布尔值以数学家乔治·布尔(George Boole)的名字命名,布尔值始终以大写B开头。在Python中,值True
和False
也始终使用大写的T和F,因为它们在Python中是特殊值。
在本教程中,我们将介绍在Python中了解布尔值的所需内容,并探讨比较运算符、逻辑运算符和真值表。
比较运算符
在编程中,比较运算符用于比较值并将其评估为单个布尔值,即 True
或 False
。
下表列出了布尔比较运算符。
运算符 | 含义 |
---|---|
== | 等于 |
!= | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于或等于 |
>= | 大于或等于 |
为了理解这些运算符的工作原理,让我们在Python程序中将两个整数分配给两个变量:
x = 5
y = 8
在这个例子中,由于x
的值是5
,它小于y
的值是8
。
使用这两个变量及其关联的值,让我们遍历上表中的运算符。在我们的程序中,我们将要求Python打印出每个比较运算符是否评估为 True
或 False
。为了帮助我们和其他人更好地理解这个输出,我们还将要求Python打印一个字符串,以显示它正在评估什么。
x = 5
y = 8
print("x == y:", x == y)
print("x != y:", x != y)
print("x < y:", x < y)
print("x > y:", x > y)
print("x <= y:", x <= y)
print("x >= y:", x >= y)
当我们运行这个程序时,我们将收到以下输出。
x == y: False
x != y: True
x < y: True
x > y: False
x <= y: True
x >= y: False
按照数学逻辑,Python 在上述每个表达式中评估:
- 5(
x
)是否等于8(y
)?False - 5是否不等于8?True
- 5是否小于8?True
- 5是否大于8?False
- 5是否小于或等于8?True
- 5是否不小于或等于8?False
尽管我们在这里使用的是整数,但我们可以用浮点数值替换它们。
字符串也可以与布尔运算符一起使用。它们是区分大小写的,除非您使用附加的字符串方法。
以下是在实践中如何使用布尔运算符比较字符串的方式:
Sammy = "Sammy"
sammy = "sammy"
print("Sammy == sammy: ", Sammy == sammy)
上述程序的输出返回如下。
Sammy == sammy: False
上面的程序中,字符串"Sammy"
不等于字符串"sammy"
,因为它们不完全相同;一个以大写字母"S"开头,另一个以小写字母 "s"
开头。但是,如果我们添加另一个变量,该变量被赋予值"Sammy"
,那么它们将被评估为相等:
Sammy = "Sammy"
sammy = "sammy"
also_Sammy = "Sammy"
print("Sammy == sammy: ", Sammy == sammy)
print("Sammy == also_Sammy", Sammy == also_Sammy)
运行上面的程序后,我们将得到以下输出。这表明只要字符串是绝对相同的(包括大小写),它们将从布尔逻辑的角度评估为相等。
Sammy == sammy: False
Sammy == also_Sammy: True
您还可以使用其他比较运算符,包括>
和<
,来比较两个字符串。Python将使用字符的ASCII值字典顺序来比较这些字符串。
我们还可以使用比较运算符评估布尔值:
t = True
f = False
print("t != f: ", t != f)
上面的程序将返回以下结果。
t != f: True
如上面的输出所示,我们编写的代码评估了True
是否等于False
。
请注意等号=
和==
之间的差异。
x = y # 将x设置为y的值
x == y # 评估x是否等于y
第一个=
是赋值运算符,将一个值设置为另一个值。第二个==
是比较运算符,它将评估两个值是否相等。
逻辑运算符
有三个逻辑运算符用于比较值。它们将表达式评估为布尔值,返回True
或False
。这些运算符是and
、or
和not
,在下表中定义了它们。
运算符 | 含义 | 示例 |
---|---|---|
and | 如果两个都为真,则为真 | x and y |
or | 如果至少有一个为真,则为真 | x or y |
not | 仅当为假时为真 | not x |
逻辑运算符通常用于评估两个或多个表达式是否为真或不为真。例如,它们可用于确定成绩是否合格且学生是否注册了该课程。如果这两种情况都为真,则学生将被分配一个等级。另一个例子是根据用户是否是在线商店的有效活跃客户来确定,这取决于他们是否有商店信用或在过去的6个月内是否购物。
为了理解逻辑运算符的工作原理,让我们评估三个表达式:
print((9 > 7) and (2 < 4)) # 两个原始表达式都为真
print((8 == 8) or (6 != 6)) # 一个原始表达式为真
print(not(3 <= 1)) # 原始表达式为假
True
True
True
在第一个例子中,print((9 > 7) and (2 < 4))
,因为9 > 7
和2 < 4
都为真,所以and
运算符被使用。
在第二个例子中,print((8 == 8) or (6 != 6))
,由于8 == 8
评估为真,所以6 != 6
的评估为假并不重要,因为使用了or
运算符。如果我们使用and
运算符,这将评估为假。
在第三个例子中,print(not(3 <= 1))
,not
运算符否定了3 <=1
返回的假值。让我们将浮点数替换为整数,并朝着False
的方向进行评估:
print((-0.2 > 1.4) and (0.8 < 3.1)) # 一个原始表达式为假
print((7.5 == 8.9) or (9.2 != 9.2)) # 两个原始表达式都为假
print(not(-5.7 <= 0.3)) # 原始表达式为真
在上面的例子中:
and
必须至少有一个为False
的表达式,评估为False
,or
必须使两个表达式都评估为False
,not
必须使其内部表达式为True
,新表达式才能评估为False
。
如果上面的结果对您来说不够清晰,我们将在下面通过一些真值表来让您迅速掌握。
您还可以使用and
、or
和not
编写复合语句:
not((-0.2 > 1.4) and ((0.8 < 3.1) or (0.1 == 0.1)))
让我们首先看最内层的表达式:(0.8 < 3.1) or (0.1 == 0.1)
。这个表达式评估为True
,因为两个数学语句都为True
。
现在,我们可以取得返回的值True
,并将其与下一个内部表达式组合在一起:(-0.2 > 1.4) and (True)
。这个示例返回False
,因为数学语句-0.2 > 1.4
为False
,(False) and (True)
返回False
。
最后,我们有外部表达式:not(False)
,它评估为True
,因此如果我们打印此语句,最终的返回值将是:
True
逻辑运算符and
、or
和not
评估表达式并返回布尔值。
真值表
有很多关于数学逻辑的知识,但我们可以选择性地学习其中一些,以提高我们在编程时的算法思维。
下面是比较运算符==
的真值表,以及逻辑运算符and
、or
和not
的真值表。虽然您可能能够通过推理出它们,但在构建计算机编程中的算法(指令)时,将它们记住也是有帮助的。
== 真值表
x | == | y | 返回值 |
---|---|---|---|
True | == | True | True |
True | == | False | False |
False | == | True | False |
False | == | False | True |
AND 真值表
x | and | y | 返回值 |
---|---|---|---|
True | and | True | True |
True | and | False | False |
False | and | True | False |
False | and | False | False |
OR 真值表
x | or | y | 返回值 |
---|---|---|---|
True | or | True | True |
True | or | False | True |
False | or | True | True |
False | or | False | False |
NOT 真值表
not | x | 返回值 |
---|---|---|
not | True | False |
not | False | True |
真值表是在逻辑中常见的数学表,对于在计算机编程中构建算法(指令)时,记住或牢记这些表是有用的。
使用布尔运算符进行流程控制
要通过流程控制语句控制程序的流程和结果,我们可以使用条件后跟子句。
条件评估为True或False的布尔值,表示在程序中做出决定的地方。也就是说,条件会告诉我们某事是否为True或False。
子句是跟随条件的代码块,并决定程序的结果。也就是说,它是构造“如果x
为True,则执行此操作”形式的决策的做这个部分。
以下代码块展示了比较运算符与条件语句一起工作,以控制Python程序的流程:
if grade >= 65: # 条件
print("Passing grade") # 子句
else:
print("Failing grade")
这个程序将评估每个学生的成绩是否及格。对于成绩为83的学生,第一个语句将评估为True
,并触发Passing grade
的打印语句。对于成绩为59的学生,第一个语句将评估为False
,因此程序将继续执行与else
表达式关联的打印语句:Failing grade
。
因为Python中的每个对象都可以评估为True或False,PEP 8样式指南建议不要将值与True
或False
进行比较,因为这样做会降低可读性,并且经常会返回意外的布尔值。也就是说,您应该避免在程序中使用 if sammy == True:
。相反,比较sammy
与另一个非布尔值,该值将返回布尔值。
布尔运算符通过流程控制语句提供条件,可用于决定程序的最终结果。
结论
本教程讨论了属于布尔类型的比较和逻辑运算符,以及真值表和如何在程序流程控制中使用布尔值。
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Windows上安装 Python 环境并配置环境变量 (超详细教程)