掌握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。
- 第一个`if score >= 90:`为假(False)。
- 下一个`elif score >= 80:`为真(True)。
应用示例:组合多个条件
在if语句中,我们还可以使用`and`(与)、`or`(或)、`not`(非)等逻辑运算符来指定更复杂的条件。
- `A and B`: 当A和B都为真时,结果为真
- `A or B`: 当A或B至少有一个为真时,结果为真
- `not A`: 当A为假时,结果为真
例如,让我们编写一个“时间在上午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: 当条件为真时执行处理。
- else: 当if的条件为假时执行处理。
- elif: 按顺序评估多个条件。
- 缩进和冒号(:)是语法的关键。
- 通过组合`and`, `or`, `in`等运算符,可以表达更复杂的条件。
if语句是在所有程序中都会用到的非常重要的语法。请尝试在您自己的电脑上运行本文的代码,并改变各种值进行试验。通过确认自己写的代码能根据条件改变行为,您一定能体会到编程的乐趣和强大。掌握条件分支,并将其活用到您想做的Web服务或工具开发中去吧!
作为下一步,要不要学习一下循环处理呢?
下一篇文章:理解Python的for和while循环