🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

掌握Python的if语句,精通条件分支

要在电脑上通过命令提示符或 PowerShell 运行 Python,需要先下载并安装 Python。
如果你还没有安装,请参考Python安装与开发环境配置一文来完成安装。

欢迎来到编程世界!对于刚开始制作网站或开发应用程序的各位来说,Python的学习进展顺利吗?这次,我们将深入讲解编程的基本“控制结构”之一——if语句。if语句是一个命令,仅在满足特定条件时才执行处理,从而实现“如果...那么...”这样的条件分支。阅读本文后,您将能牢固掌握if语句的基础到应用,并通过可直接复制粘贴运行的代码,体验到“编程的乐趣”!


if语句的基本用法

首先,让我们来看看最简单的if语句形式。它的意思是“如果条件为真(True),则执行其中的处理”。语法非常简单。


if 条件表达式:
    # 条件表达式为真(True)时执行的代码
  

这里的关键是冒号(:)缩进。if语句行的末尾必须有冒号,从下一行开始,要执行的代码需要进行缩进(通常是4个半角空格)。在Python中,缩进起着定义代码块的重要作用。

那么,让我们来看一个实际可运行的代码。这里我们介绍一个判断年龄是否满20岁的简单示例。


# 将25赋值给变量age
age = 25

# 如果age大于或等于20,则显示消息
if age >= 20:
    print("您是成年人。")

# 这行代码在if语句块之外,所以无论条件如何都会执行
print("程序结束。")
    

运行结果:


您是成年人。
程序结束。
  

在这段代码中,变量`age`的值是25,所以条件表达式`age >= 20`为真(True)。因此,缩进的`print("您是成年人。")`被执行。如果您将`age`的值改为18等并运行,这一行将不会被执行,只会显示“程序结束。”。请务必试一试。


else:处理条件不成立的情况

接下来,我们学习如何添加条件不满足时的处理,即“如果...那么...,否则...”。这时就要用到else了。


if 条件表达式:
    # 条件表达式为真(True)时执行的代码
else:
    # 条件表达式为假(False)时执行的代码
  

让我们在刚才的年龄判断示例中加入else。这次我们将`age`设置为18。


# 将18赋值给变量age
age = 18

# 如果age大于或等于20,显示“您是成年人。”
if age >= 20:
    print("您是成年人。")
# 否则,显示“您是未成年人。”
else:
    print("您是未成年人。")

print("程序结束。")
    

运行结果:


您是未成年人。
程序结束。
  

这次`age`是18,所以条件表达式`age >= 20`为假(False)。因此,if块中的处理被跳过,执行了else块中的`print("您是未成年人。")`。这样,无论输入的年龄是多少,总会显示其中一条消息。


elif:实现多重条件分支

那么,如果有两个以上的条件怎么办?例如,我们想根据分数来评定“优秀”、“良好”、“及格”、“不及格”。对于这种多重条件分支,我们使用elif(else if的缩写)。


if 条件1:
    # 条件1为真时执行的代码
elif 条件2:
    # 条件1为假、条件2为真时执行的代码
elif 条件3:
    # 条件1、2为假、条件3为真时执行的代码
else:
    # 所有条件都为假时执行的代码
  

elif可以添加任意多个。Python会从上到下依次评估条件表达式,一旦找到第一个为真(True)的条件,就会执行其对应的代码块,然后跳过所有剩余的elif和else,退出整个if语句。

让我们来看一个分数评定的例子。


# 将85分赋值给变量score
score = 85

if score >= 90:
    grade = "优秀"
elif score >= 80:
    grade = "良好"
elif score >= 60:
    grade = "及格"
else:
    grade = "不及格"

print(f"您的分数是{score}分,评价为“{grade}”。")
    

运行结果:


您的分数是85分,评价为“良好”。
  

在这段代码中,`score`是85。

  1. 第一个`if score >= 90:`为假(False)。
  2. 下一个`elif score >= 80:`为真(True)。
此时条件满足,因此执行`grade = "良好"`,随后的`elif`和`else`将不再被评估,程序退出if语句。如果`score`是50,那么`if`和所有的`elif`都为假,最后将执行`else`块,`grade`会变为“不及格”。


应用示例:组合多个条件

在if语句中,我们还可以使用`and`(与)、`or`(或)、`not`(非)等逻辑运算符来指定更复杂的条件。

例如,让我们编写一个“时间在上午9点到下午5点之间,且不是周末”的条件。


# 假设当前时间和星期
hour = 10
day_of_week = "星期一"

# 判断营业时间
# 时间大于等于9点 且 小于17点
is_open_hour = hour >= 9 and hour < 17 
# 星期不等于星期六 且 不等于星期日
is_weekday = day_of_week != "星期六" and day_of_week != "星期日"

if is_open_hour and is_weekday:
    print("在营业时间内。")
else:
    print("已过营业时间。")
    

运行结果:


在营业时间内。
  

像这样组合多个条件,就可以用程序来表达现实世界中更复杂的规则。


面向Web开发者的完整可运行示例

对于Web开发者来说,您可能对使用Python动态生成HTML感兴趣。下一个示例是一个Python脚本,它根据用户的登录状态和会员方案生成不同的HTML消息。运行此Python代码会生成一个名为`welcome_message.html`的HTML文件。这正是体验“代码运行起来”的绝佳机会!

请尝试将以下Python代码保存为例如`generate_html.py`的文件并运行它。


# --- 模拟用户信息 ---
is_logged_in = True
user_name = "张三"
membership_plan = "premium"  # 可以是 "premium", "standard", "free"

# --- 决定HTML内容 ---
if is_logged_in:
    if membership_plan == "premium":
        title = f"欢迎您,{user_name}!"
        message = "您可以使用所有的会员功能。"
        color = "#ffd700"  # Gold
    elif membership_plan == "standard":
        title = f"欢迎您,{user_name}!"
        message = "您正在使用标准套餐。"
        color = "#4682b4"  # SteelBlue
    else: # free plan
        title = f"欢迎您,{user_name}!"
        message = '您正在使用免费套餐,要不要升级?'
        color = "#cccccc"  # LightGray
else:
    title = "您好,游客"
    message = '使用服务需要登录。'
    color = "#f0f0f0"

# --- 生成HTML代码 ---
html_content = f"""
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>欢迎信息</title>
    <style>
        body {{
            font-family: sans-serif;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
            background-color: #f9f9f9;
        }}
        .welcome-card {{
            border: 2px solid {color};
            border-radius: 10px;
            padding: 2rem;
            box-shadow: 0 4px 8px rgba(0,0,0,0.1);
            text-align: center;
            background-color: white;
        }}
        h1 {{
            color: #333;
        }}
        p {{
            color: #555;
            font-size: 1.1rem;
        }}
        a {{
            color: #007bff;
            text-decoration: none;
        }}
        a:hover {{
            text-decoration: underline;
        }}
    </style>
</head>
<body>
    <div class="welcome-card">
        <h1>{title}</h1>
        <p>{message}</p>
    </div>
</body>
</html>
"""

# --- 写入文件 ---
try:
    with open("welcome_message.html", "w", encoding="utf-8") as f:
        f.write(html_content)
    print("已生成HTML文件 'welcome_message.html'。")
    print("请在浏览器中打开以确认。")
except IOError as e:
    print(f"写入文件时发生错误: {e}")

    

运行此代码后,同目录下会创建一个名为`welcome_message.html`的文件。在浏览器中打开此文件,您应该会看到根据`is_logged_in`和`membership_plan`的值显示的不同设计的消息。尝试改变这些变量的值,看看生成的HTML会如何变化吧!这是用编程创建动态内容的第一步。


注意事项(常见错误)

刚开始使用if语句时,每个人都会犯一些常见的错误。让我们在这里提前检查一下。

1. 混淆相等运算符`==`和赋值运算符`=`

在if语句的条件表达式中比较“相等”,需要使用两个等号`==`。一个等号`=`是用于给变量赋值的运算符。如果搞错了,会导致错误或非预期的行为。


# 错误
if membership_plan = "premium": # 这里会报错!
    ...

# 正确
if membership_plan == "premium":
    ...
  

2. 缩进错误

在Python中,缩进本身就意味着代码的结构。if块内的代码必须使用相同数量的半角空格(通常是4个)进行缩进。如果缩进不一致,会产生`IndentationError`错误。


score = 80
if score >= 60:
    print("合格。")
  print("恭喜您。") # 因缩进错误而报错
  

3. `if`和`elif`的正确使用

如果只用`if`来罗列多个条件,每个`if`语句都会被独立评估。这可能会导致与预期不符的结果。

例如,让我们考虑分数为95的情况。


# 错误示例 (连续使用if)
score = 95
if score >= 90:
    print("评价为优秀。")
if score >= 80: # 这个if也会被独立评估
    print("评价为良好。")
    

运行结果:


评价为优秀。
评价为良好。
  

因为95分既大于等于90,也大于等于80,所以两条消息都被显示了。这种时候就该`elif`出场了。如果使用`elif`,一旦上面的条件满足,评估就会结束。


# 正确示例 (使用elif)
score = 95
if score >= 90:
    print("评价为优秀。")
elif score >= 80:
    print("评价为良好。")
    

运行结果:


评价为优秀。
  

像这样,当希望对一个事物进行多阶段评估时,使用`if-elif-else`结构是合适的。


相关实用代码介绍

我们再介绍一些常与if语句一起使用的便利语法。

`in`运算符:检查元素是否存在于列表或字符串中

当想检查特定元素是否存在于列表、元组或字符串中时,`in`运算符非常方便。它能让您写出比连接多个`or`更简洁的代码。

例如,让我们判断今天是星期几是否是休息日(周六日)。


day_of_week = "星期日"
holidays = ["星期六", "星期日"]

# 冗长的写法
# if day_of_week == "星期六" or day_of_week == "星期日":
#     print("今天是休息日。")

# 使用in运算符的简洁写法
if day_of_week in holidays:
    print("今天是休息日。")
else:
    print("今天是工作日。")
    

运行结果:


今天是休息日。
  

使用`in`运算符,您只需一行代码就可以检查`day_of_week`是否包含在`holidays`列表中,使代码非常易读。


总结

这次,我们讲解了Python条件分支的基础——if语句,内容从基本用法到使用`else`、`elif`的应用,再到面向Web开发者的具体HTML生成示例。

if语句是在所有程序中都会用到的非常重要的语法。请尝试在您自己的电脑上运行本文的代码,并改变各种值进行试验。通过确认自己写的代码能根据条件改变行为,您一定能体会到编程的乐趣和强大。掌握条件分支,并将其活用到您想做的Web服务或工具开发中去吧!


作为下一步,要不要学习一下循环处理呢?

下一篇文章:理解Python的for和while循环