一文搞懂 Python 3 中的布尔类型

介绍

布尔数据类型可以是两个值之一,即True(真)或False(假)。在编程中,我们使用布尔值进行比较,并确定给定程序的控制流程。

布尔值表示与数学逻辑分支相关的真值,这影响计算机科学中的算法。布尔值以数学家乔治·布尔(George Boole)的名字命名,布尔值始终以大写B开头。在Python中,值TrueFalse也始终使用大写的T和F,因为它们在Python中是特殊值。

在本教程中,我们将介绍在Python中了解布尔值的所需内容,并探讨比较运算符、逻辑运算符和真值表。

比较运算符

在编程中,比较运算符用于比较值并将其评估为单个布尔值,即 TrueFalse

下表列出了布尔比较运算符。

运算符含义
==等于
!=不等于
<小于
>大于
<=小于或等于
>=大于或等于

为了理解这些运算符的工作原理,让我们在Python程序中将两个整数分配给两个变量:

x = 5
y = 8

在这个例子中,由于x的值是5,它小于y的值是8

使用这两个变量及其关联的值,让我们遍历上表中的运算符。在我们的程序中,我们将要求Python打印出每个比较运算符是否评估为 TrueFalse。为了帮助我们和其他人更好地理解这个输出,我们还将要求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

第一个=是赋值运算符,将一个值设置为另一个值。第二个==是比较运算符,它将评估两个值是否相等。

逻辑运算符

有三个逻辑运算符用于比较值。它们将表达式评估为布尔值,返回TrueFalse。这些运算符是andornot,在下表中定义了它们。

运算符含义示例
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 > 72 < 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

如果上面的结果对您来说不够清晰,我们将在下面通过一些真值表来让您迅速掌握。

您还可以使用andornot编写复合语句:

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.4False(False) and (True)返回False

最后,我们有外部表达式:not(False),它评估为True,因此如果我们打印此语句,最终的返回值将是:

True

逻辑运算符andornot评估表达式并返回布尔值。

真值表

有很多关于数学逻辑的知识,但我们可以选择性地学习其中一些,以提高我们在编程时的算法思维。

下面是比较运算符==的真值表,以及逻辑运算符andornot的真值表。虽然您可能能够通过推理出它们,但在构建计算机编程中的算法(指令)时,将它们记住也是有帮助的。

== 真值表

x==y返回值
True==TrueTrue
True==FalseFalse
False==TrueFalse
False==FalseTrue

AND 真值表

xandy返回值
TrueandTrueTrue
TrueandFalseFalse
FalseandTrueFalse
FalseandFalseFalse

OR 真值表

xory返回值
TrueorTrueTrue
TrueorFalseTrue
FalseorTrueTrue
FalseorFalseFalse

NOT 真值表

notx返回值
notTrueFalse
notFalseTrue

真值表是在逻辑中常见的数学表,对于在计算机编程中构建算法(指令)时,记住或牢记这些表是有用的。

使用布尔运算符进行流程控制

要通过流程控制语句控制程序的流程和结果,我们可以使用条件后跟子句

条件评估为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样式指南建议不要将值与TrueFalse进行比较,因为这样做会降低可读性,并且经常会返回意外的布尔值。也就是说,您应该避免在程序中使用 if sammy == True:。相反,比较sammy与另一个非布尔值,该值将返回布尔值。

布尔运算符通过流程控制语句提供条件,可用于决定程序的最终结果。

结论

本教程讨论了属于布尔类型的比较和逻辑运算符,以及真值表和如何在程序流程控制中使用布尔值。

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python面向对象编程(Object-Oriented Programming,简称OOP)是一种程序设计方法,它将数据和操作数据的方法组合成对象,通过定义类(class)来创建对象。下面是一些概念和原则,可以帮助你更好地理解Python面向对象编程。 1. 类和对象: - 类是一种抽象的数据类型,它定义了对象的属性和方法。 - 对象是类的实例,它具有类定义的属性和方法。 2. 属性和方法: - 属性是对象的数据,可以是整数、字符串、列表等。 - 方法是对象的行为,可以是函数或过程。 3. 封装: - 封装是将数据和对数据的操作封装在一起,以创建一个独立的实体。 - 使用类来封装数据和方法,可以隐藏实现细节,提高代码的可读性和可维护性。 4. 继承: - 继承是一种机制,允许一个类继承另一个类的属性和方法。 - 子类可以重用父类的代码,并且可以添加新的属性和方法。 5. 多态: - 多态是指同一个方法可以在不同的类具有不同的实现方式。 - 多态可以提高代码的灵活性和可扩展性。 下面是一个简单的例子,展示了如何定义一个类、创建对象并调用对象的方法: ```python class Person: def __init__(self, name, age): self.name = name self.age = age def say_hello(self): print(f"Hello, my name is {self.name} and I'm {self.age} years old.") # 创建对象 person = Person("Alice", 25) # 调用对象的方法 person.say_hello() ``` 这个例子定义了一个名为`Person`的类,它有两个属性(`name`和`age`)和一个方法(`say_hello`)。我们通过`Person`类创建了一个名为`person`的对象,并调用了它的`say_hello`方法。 希望这个简单的例子能帮助你更好地理解Python面向对象编程。如果你有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张无忌打怪兽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值