Python 零基础教程

Python 条件语句

条件语句允许你的程序根据特定的条件做出决定,并执行不同的代码路径。

条件语句为你的代码带来了逻辑和灵活性,使其能够动态地响应各种输入和情况。如果没有条件语句,程序每次都会无视处理的数据,执行完全相同的指令序列。

本章将为你全面讲解 Python 中的 ifelifelse 语句,为你提供创建更复杂、适应性更强的程序所需的工具。

1. if 语句:有条件地执行代码

if 语句是条件执行的最基本形式。它允许你仅在某个特定条件为真(True)时才执行一段代码。其语法非常直接:

if condition:
    # 如果条件为真,将执行此代码

这里的 condition(条件)是一个计算结果为 TrueFalse 的表达式。如果条件为 True,则执行 if 语句下方缩进的代码块。如果条件为 False,则直接跳过该代码块。

1.1 if 基础示例

让我们从一个简单的例子开始:

age = 20
if age >= 18:
    print("你有资格投票。")  # 这一行会被执行,因为 age 的值是 20

在这个例子中,条件 age >= 18 的计算结果为 True,因为 age 的值是 20,大于或等于 18。因此,print 语句被成功执行。

现在,让我们来看一个条件为 False 的情况:

age = 16
if age >= 18:
    print("你有资格投票。")  # 这一行不会被执行,因为 age 的值是 16

在这里,条件 age >= 18 的计算结果为 False,因为 16 小于 18。结果就是,print 语句被跳过,控制台不会打印任何内容。

1.2 使用比较运算符

if 语句中的条件通常会用到比较运算符(你在之前的模块中可能已经学过)。这些运算符允许你比较不同的值并确定它们之间的关系。以下是常用比较运算符的快速回顾:

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

让我们看看使用这些运算符的代码示例:

x = 10
y = 5

if x > y:
    print("x 大于 y")  # 输出: x 大于 y

if x != y:
    print("x 不等于 y")  # 输出: x 不等于 y

if x == y:
    print("x 等于 y")  # 这一行不会被执行

1.3 缩进至关重要

在 Python 中,缩进(Indentation)用于定义代码块。if 语句下方的代码块必须缩进。标准的缩进是四个空格。不正确的缩进会导致语法错误。

age = 25
if age > 18:
    print("你是一个成年人。")
    print("你可以开车。")  # 这两行都属于 'if' 代码块的一部分
age = 15
if age > 18:
    print("你是一个成年人。")
print("你不是一个成年人。") # 这一行在 'if' 代码块之外,因此它总是会被执行

在第二个例子中,无论年龄是多少,“你不是一个成年人。” 这句话总是会被打印出来,因为它没有缩进,不属于 if 语句控制的代码块。

2. else 语句:提供备选方案

else 语句提供了一个备选的代码块,当 if 条件为 False 时就会执行这个备选代码块。它的语法如下:

if condition:
    # 如果条件为真,执行此代码
else:
    # 如果条件为假,执行此代码

2.1 else 基础示例

让我们回顾一下刚才的投票资格示例,并加上一个 else 语句:

age = 16
if age >= 18:
    print("你有资格投票。")
else:
    print("你暂时还没有资格投票。")  # 输出: 你暂时还没有资格投票。

在这种情况下,因为 age 是 16,条件 age >= 18False。因此,else 语句下方的代码块被执行,打印出“你暂时还没有资格投票。”。

2.2 结合 if 和 else

ifelse 语句协同工作,提供了一个二选一的分支:要么执行 if 块,要么执行 else 块。不存在其他的可能性。

number = 7
if number % 2 == 0:
    print("这个数字是偶数。")
else:
    print("这个数字是奇数。")  # 输出: 这个数字是奇数。

在这里,% 运算符(取模)返回除法的余数。如果 number 除以 2 的余数是 0,则该数字是偶数;否则,它就是奇数。

3. elif 语句:处理多个条件

elif 语句("else if" 的简写)允许你按顺序检查多个条件。它提供了一种处理两种以上可能结果的方法。语法如下:

if condition1:
    # 如果 condition1 为真,执行此代码
elif condition2:
    # 如果 condition1 为假且 condition2 为真,执行此代码
elif condition3:
    # 如果 condition1, condition2 都为假,且 condition3 为真,执行此代码
else:
    # 如果所有条件都为假,执行此代码

你可以根据需要编写任意多个 elif 语句。程序会按顺序检查这些条件,第一个计算结果为 True 的条件将触发其对应的代码块执行。如果所有条件都不为 True,则执行 else 块(如果有的话)。

3.1 elif 基础示例

让我们编写一个程序,根据学生的分数决定其字母等级:

score = 85

if score >= 90:
    print("A")
elif score >= 80:
    print("B")  # 输出: B
elif score >= 70:
    print("C")
elif score >= 60:
    print("D")
else:
    print("F")

在这个例子中,条件按顺序被检查。因为 score 是 85,第一个条件 score >= 90False。第二个条件 score >= 80True,因此打印出 "B",随后剩下的 elifelse 块都会被直接跳过。

3.2 顺序非常重要

elif 条件的排列顺序极其重要。如果条件没有正确排序,你可能会得到意想不到的结果。

看下面这个例子:

temperature = 75

if temperature > 80:
    print("天气很热!")
elif temperature > 60:
    print("天气很温暖。")  # 输出: 天气很温暖。
elif temperature > 40:
    print("天气很温和。")
else:
    print("天气很冷。")

如果我们改变 elif 条件的顺序:

temperature = 75

if temperature > 40:
    print("天气很温和。")  # 输出: 天气很温和。
elif temperature > 60:
    print("天气很温暖。")
elif temperature > 80:
    print("天气很热!")
else:
    print("天气很冷。")

在第二个例子中,打印出来的是 "天气很温和。",因为第一个条件 temperature > 40True(75 确实大于 40)。后续的 elif 条件根本不会被检查。因此,务必按照从最具体到最不具体(或反之)的顺序来排列你的条件,以确保执行正确的代码块。

3.3 综合使用 if、elif 和 else

你可以将 ifelifelse 结合起来创建复杂的决策结构。else 语句是可选的,但为了处理所有 ifelif 条件都没有被满足的情况,加上它通常是一个良好的编程习惯。

age = 12

if age < 13:
    print("你是一个儿童。")  # 输出: 你是一个儿童。
elif age < 20:
    print("你是一个青少年。")
else:
    print("你是一个成年人。")

4. 嵌套条件语句

你还可以将条件语句嵌套在其他条件语句的内部。这允许你创建更复杂的决策逻辑。

x = 10
y = 5

if x > 0:
    print("x 是正数。")  # 输出: x 是正数。
    if y > 0:
        print("y 也是正数。")  # 输出: y 也是正数。
    else:
        print("y 不是正数。")
else:
    print("x 不是正数。")

在这个例子中,外层的 if 语句首先检查 x 是否为正数。如果是,内层的 if 语句会继续检查 y 是否也是正数。

4.1 避免过深的嵌套

虽然嵌套是可以的,但过深的嵌套条件会使你的代码变得难以阅读和理解。通常更好的做法是使用布尔运算符(这将在后面的模块中介绍)来简化复杂的逻辑,或者将代码拆分为更小的函数。