如何在 Python 中使用 if 语句进行条件测试
发布日期:
本文内容
本文通过实例和详细解释,介绍了 Python 中条件测试的基本概念和应用。文章首先展示了如何使用 if
语句处理特殊情况,然后讲解了条件测试的语法和逻辑,包括变量值的相等与不等判断、大小写不敏感的比较、数值比较以及使用 and
和 or
组合多个条件。
此外,还介绍了如何检查值是否在列表中,以及布尔表达式的使用。通过这些内容,读者可以更好地理解和应用 Python 的条件测试,编写出更灵活和高效的程序。
一个简单的示例
以下示例展示了如何使用 if
语句来正确处理特殊情况。假设你有一个汽车列表,希望打印出每辆汽车的名称。对于大多数汽车,名称应以首字母大写的形式显示,但对于名称为 “bmw” 的汽车,则应以全大写的形式显示。下面的代码将遍历该列表,并根据上述规则打印汽车名称:
|
|
在这个示例中,循环首先检查当前汽车的名称是否为 “bmw”。如果是,则以全大写的形式打印,否则以首字母大写的形式打印:
|
|
接下来,我们将介绍如何在程序中进行条件测试。
条件测试
在 Python 编程中,if
语句是实现条件判断的关键工具。其核心在于一个返回布尔值(True
或 False
)的表达式,我们称之为条件测试。Python 根据条件测试的结果来决定是否执行 if
语句中的代码块。如果条件测试的结果为 True
,则执行相应的代码;如果为 False
,则跳过这些代码。
检查是否相等
条件测试中最常见的一种是检查变量的值是否与某个特定值相等。这种操作通常使用双等号(==
)来实现:
|
|
在上面的示例中,我们首先将变量 car
的值设置为 “bmw”。然后,使用 ==
运算符来判断 car
的值是否为 “bmw”。如果两边的值相等,Python 返回 True
;否则返回 False
。在这个例子中,由于两边的值相同,因此返回 True
。
如果变量 car
的值不是 “bmw”,条件测试将返回 False
:
|
|
这里,一个等号(=
)用于赋值,表示将变量 car
的值设置为 “audi”。而两个等号(==
)用于比较,判断变量 car
的值是否为 “bmw”。
如何在检查是否相等时忽略大小写
在 Python 中,默认情况下,字符串的相等性检查是区分大小写的。例如,两个大小写不同的字符串被视为不相等:
|
|
这种区分大小写的行为在某些情况下是有益的,但如果大小写不重要,你只想检查变量的值,可以先将变量的值转换为全小写,再进行比较:
|
|
无论字符串 “Audi” 的大小写如何,上述条件测试都将返回 True
,因为它不区分大小写。lower()
方法不会修改存储在变量 car
中的值,因此进行这样的比较不会影响原来的变量:
|
|
首先,我们将首字母大写的字符串 “Audi” 赋给变量 car
。然后,获取变量 car
的值并将其转换为全小写,再与字符串 “audi” 进行比较。由于这两个字符串相同,Python 返回 True
。如你所见,lower()
方法并没有影响存储在变量 car
中的值。
网站通常采用类似的方式,以确保用户输入的数据符合特定格式。例如,网站可能会使用类似的条件测试来确保用户名的唯一性,而不是仅仅因为大小写不同而被视为不同。在用户提交新的用户名时,将其转换为全小写,并与所有现有用户名的小写版本进行比较。这样,如果已经有用户名 “john”(无论大小写如何),用户在提交用户名 “John” 时将被拒绝。
检查是否不等
要判断两个值是否不等,可以使用不等运算符(!=
)。下面的示例展示了如何使用不等运算符。我们将顾客点的比萨配料(topping)存储在一个变量中,然后打印一条消息,指出这名顾客点的配料是否是意式小银鱼(anchovies):
|
|
这些代码将 requested_topping
的值与 “anchovies” 进行比较。如果这两个值不相等,Python 将返回 True
,并执行紧跟在 if
语句后面的代码;如果相等,Python 将返回 False
,不执行紧跟在 if
语句后面的代码。
由于 requested_topping
的值不是 “anchovies”,因此执行 print()
函数:
|
|
你编写的大多数条件表达式会检查两个值是否相等,但有时候检查两个值是否不等的效率更高。
数值比较
检查数值非常简单。例如,下面的代码检查一个人是否是 18 岁:
|
|
还可以检查两个数是否不等。例如,下面的代码在提供的答案不正确时打印一条消息:
|
|
由于 answer
的值(17)不是 42,条件得到满足,因此缩进的代码行得以执行:
|
|
条件语句可以包含各种数学比较,如小于、小于等于、大于、大于等于:
|
|
每种数学比较都可以成为 if
语句的一部分,从而让你能够直接检查你感兴趣的多个条件。
检查多个条件
有时,我们需要同时检查多个条件。例如,可能需要在两个条件都为 True
时才执行相应的操作,或者只要求其中一个条件为 True
。在这种情况下,关键字 and
和 or
可以帮助我们实现这一目标。
使用 and 检查多个条件
要检查两个条件是否都为 True
,可以使用关键字 and
将两个条件测试合并为一个表达式。如果每个条件测试都通过,则整个表达式为 True
;如果至少有一个条件测试未通过,则整个表达式为 False
。
例如,要检查两个人是否都不小于 21 岁,可以使用以下条件测试:
|
|
首先,定义两个用于存储年龄的变量 age_0
和 age_1
。然后,检查这两个变量是否都大于或等于 21。在第一个测试中,and
左边的条件通过了,但右边的条件未通过,因此整个条件表达式的结果为 False
。接下来,将 age_1
改为 22,这样两个条件测试都通过了,导致整个条件表达式的结果为 True
。
为了提高可读性,可以将每个条件测试放在一对括号内,但这并非必须。如果使用括号,条件测试将类似于以下形式:
|
|
使用 or 检查多个条件
关键字 or
也用于检查多个条件,但只要满足其中一个条件,整个条件测试就能通过。只有当所有条件测试都未通过时,使用 or
的表达式才为 False
。
下面再次检查两个人的年龄,但条件是至少有一个人的年龄不小于 21 岁:
|
|
同样,首先定义两个用于存储年龄的变量。由于对 age_0
的条件测试通过了,因此整个表达式的结果为 True
。接下来,将 age_0
减小为 18。在最后的条件测试中,两个条件测试都未通过,因此整个表达式的结果为 False
。
检查特定的值是否在列表中
在编程中,有时我们需要在执行操作之前检查列表中是否包含某个特定的值。例如,在用户注册过程中,我们需要确认提供的用户名是否已被占用;在地图程序中,我们需要检查用户提交的位置是否在已知位置列表中。
要判断某个值是否在列表中,可以使用关键字 in
。以下是一个比萨店的示例代码。这些代码首先创建一个包含用户点的比萨配料的列表,然后检查某个特定的配料是否在其中:
|
|
关键字 in
让 Python 检查列表 requested_toppings
是否包含 “mushrooms” 和 “pepperoni”。这种技巧非常实用,使我们能够轻松地检查列表中是否包含特定的值。
检查特定的值是否不在列表中
有时,确认某个值不在列表中也很重要。在这种情况下,可以使用关键字 not in
。例如,有一个列表包含被禁止在论坛上发表评论的用户,我们可以在允许用户提交评论之前检查他是否被禁言:
|
|
这里的 if
语句非常直观:如果 user
的值不在列表 banned_users
中,Python 将返回 True
,并执行缩进的代码行。
用户 “marie” 不在列表 banned_users
中,因此她将看到一条邀请她发表评论的消息:
|
|
布尔表达式
随着对编程的深入了解,你可能会遇到术语“布尔表达式”,它实际上是条件测试的另一种说法。与条件表达式一样,布尔表达式的结果要么为 True
,要么为 False
。
布尔值通常用于记录程序的状态或条件。例如,在游戏开发中,布尔变量 game_active
可以用来表示游戏是否正在运行:
|
|
如果 game_active
为 True
,则游戏继续运行;如果为 False
,则游戏暂停或结束。同样,在网站开发中,布尔变量 can_edit
可以用来表示用户是否有权限编辑特定内容:
|
|
如果 can_edit
为 True
,用户可以编辑内容;否则,用户只能查看内容。
布尔表达式还可以用于组合多个条件测试。例如,假设我们想检查用户是否既年满 18 岁又具有编辑权限:
|
|
在这个例子中,只有当 age
大于等于 18 且 can_edit
为 True
时,条件表达式才为 True
,从而执行相应的操作。
通过使用布尔表达式,我们可以更清晰地表达复杂的逻辑条件,使代码更易于理解和维护。布尔值的简单性和一致性也使得它们在处理程序状态和条件时非常高效和可靠。