Skip to content

Python 条件判断

决策是指预测程序执行期间可能出现的条件,并根据这些条件是否满足来指定相应的操作。

决策结构会评估表达式,这些表达式的结果是一个布尔值:True 或 False。根据这个结果,你的程序决定执行哪个代码块。

决策的一般流程通常如下所示:检查一个条件。如果条件为真(True),则执行操作 A。如果条件为假(False),可能检查另一个条件或执行操作 B。

理解 Python 中的“真值性”(Truthiness)

Section titled “理解 Python 中的“真值性”(Truthiness)”

在 Python 中,值在布尔上下文(例如在 if 语句中)中进行评估。以下值被视为 False:

  • 布尔值 False 本身。
  • 特殊对象 None。
  • 等于零的数字类型(例如,0、0.0、0j)。
  • 空序列(例如,''、()、[])。
  • 空映射(例如,{})。
  • 实现了返回 False 或 0 的 __bool__() 或 __len__() 方法的用户定义类的对象。

所有其他值通常被视为 True。这个概念通常被称为“真值性”(truthiness)。

Python 提供以下几种类型的决策语句:

语句描述
if 语句仅当特定条件为 True 时执行一段代码块。
if...else 语句如果条件为 True,则执行一段代码块;如果条件为 False,则执行另一段代码块。
if...elif...else 语句按顺序检查多个条件,并执行与第一个为 True 的条件相对应的代码块。如果所有条件都不为 True,则执行可选的 else 块。
嵌套 if 语句可以在其他决策语句的代码块内部放置 if、elif 或 else 语句。

让我们来探讨这些结构。

这是一个展示 if 语句的简单示例:

#!/usr/bin/env python3
temperature = 35
# 使用现代 f-string 格式化
if temperature > 30:
print(f"Temperature is {temperature}. It's hot outside!")
print("Execution finished.")

当上述代码执行时,会产生:

Temperature is 35. It's hot outside!
Execution finished.

使用 elif(else if 的缩写)可以按顺序检查多个条件:

#!/usr/bin/env python3
score = 75
if score >= 90:
grade = 'A'
elif score >= 80:
grade = 'B'
elif score >= 70:
grade = 'C'
elif score >= 60:
grade = 'D'
else:
grade = 'F'
print(f"Score: {score}, Grade: {grade}")

输出:

Score: 75, Grade: C

如果 if、elif 或 else 子句的代码块只包含一个语句,你可以将其放在头部同一行。然而,为了提高可读性(遵循 PEP 8 规范),通常建议使用单独的行和缩进,特别是对于更复杂的逻辑。

单行 if 子句的示例:

#!/usr/bin/env python3
var = 100
# 注意:地道的 Python 写法通常避免在条件周围使用括号
if var == 100: print("Value of expression is 100")
print("Goodbye!")

当上述代码执行时,会产生:

Value of expression is 100
Goodbye!

有关控制流的更多详细信息,请查阅 Python 官方文档:https://docs.python.org/3/tutorial/controlflow.html#if-statements