Python基础——分支结构
前言
在编写程序时,控制流结构至关重要,它决定了程序的执行路径。Python中的控制流结构主要包括顺序结构、分支结构和循环结构。本节将详细介绍顺序结构和分支结构,帮助你更好地理解如何控制程序的执行顺序。
1. 顺序结构
顺序结构是程序中最基本的控制流。它指的是程序按照代码的书写顺序,从上到下依次执行每一条语句,直到程序结束或遇到其他控制流结构。顺序结构通常用于简单的任务执行,如打印日志信息、计算数学表达式等。
示例代码
print("程序开始")
name = input("请输入你的名字: ")
print(f"你好, {name}")
print("程序结束")
输出:
程序开始
请输入你的名字: 小明
你好, 小明
程序结束
在这个例子中,程序按顺序执行:首先输出“程序开始”,然后读取用户输入的名字,接着输出问候语,最后输出“程序结束”。每一条语句都是按顺序执行的,没有跳过或重复。
2. 分支结构
分支结构使得程序可以根据条件来选择执行不同的路径。这种结构允许程序做出决策,是编写动态和智能程序的关键。
分支结构包括:
- 单分支结构:根据一个条件决定是否执行某个代码块。
- 双分支结构:根据一个条件决定执行两个代码块中的一个。
- 多分支结构:根据多个条件选择执行不同的代码块。
- 嵌套分支结构:在一个分支结构内部再包含另一个分支结构。
- 条件表达式:简洁的条件操作方式。
- 组合条件:使用逻辑运算符组合多个条件。
match
语句:Python 3.10及以上版本的模式匹配。
2.1 单分支结构
单分支结构仅在条件为真时执行特定的代码块,否则不执行任何操作。
temperature = 30
if temperature > 25:
print("天气很热,记得多喝水!")
输出结果:
天气很热,记得多喝水!
注意事项:
- 单分支结构适用于当条件不满足时无需执行其他操作的情况。
- 如果条件永远为假,代码块将永远不会执行。
2.2 双分支结构
双分支结构在条件为真时执行一个代码块,在条件为假时执行另一个代码块。
user_input = input("请输入你的名字: ")
if user_input:
print(f"你好, {user_input}!")
else:
print("你好,陌生人!")
输出结果:
根据用户输入:
- 如果输入了名字:“你好, [用户输入的名字]!”
- 如果未输入名字:“你好,陌生人!”
注意事项:
else
部分是可选的,但如果存在,则if
条件为假时会执行else
部分的代码。
2.3 多分支结构
多分支结构使用if
、elif
和else
,可以处理多个条件。
score = int(input("请输入你的分数: "))
if score >= 90:
print("成绩优秀!")
elif score >= 75:
print("成绩良好!")
elif score >= 60:
print("成绩合格。")
else:
print("成绩不合格,请继续努力。")
输出结果:
根据分数:
- 90分及以上:“成绩优秀!”
- 75-89分:“成绩良好!”
- 60-74分:“成绩合格。”
- 60分以下:“成绩不合格,请继续努力。”
注意事项:
elif
是“else if”的缩写,可以有多个elif
分支。else
部分是可选的,如果没有匹配的条件且没有else
,则不执行任何操作。
2.4 嵌套分支结构
嵌套分支结构在一个分支结构内部包含另一个分支结构,用于处理更加复杂的条件判断。
temperature = int(input("请输入当前温度: "))
humidity = int(input("请输入当前湿度: "))
if temperature > 30:
if humidity > 70:
print("天气闷热,请注意防暑降温!")
else:
print("天气炎热,请保持通风!")
else:
if humidity > 70:
print("天气潮湿,请注意防潮!")
else:
print("天气舒适,享受美好的一天!")
输出结果:
根据温度和湿度的组合,输出不同的建议:
- 高温高湿:“天气闷热,请注意防暑降温!”
- 高温低湿:“天气炎热,请保持通风!”
- 低温高湿:“天气潮湿,请注意防潮!”
- 低温低湿:“天气舒适,享受美好的一天!”
注意事项:
- 嵌套过深的分支结构会使代码变得复杂难读,建议保持层次清晰。
- 尽量避免嵌套层次过深,可以考虑重构代码或使用其他控制结构。
2.5 条件表达式(也称为三元运算符)
条件表达式提供了一种简洁的条件判断方式,非常适合在一行代码中进行简单的条件判断。
age = int(input("请输入你的年龄: "))
status = "成年" if age >= 18 else "未成年"
print(f"你是{status}。")
输出结果:
- 如果年龄≥18:“你是成年。”
- 如果年龄<18:“你是未成年。”
注意事项:
- 使用条件表达式时,确保代码简洁清晰。
- 适合用在简单的条件判断和赋值场景。
2.6 组合条件
组合条件使用逻辑运算符(and
、or
、not
)来检查多个条件。
age = int(input("请输入你的年龄: "))
has_ticket = input("是否持有票证?(yes/no) ").lower() == "yes"
if age >= 18 and has_ticket:
print("欢迎进入剧场!")
else:
print("抱歉,你不能进入剧场。")
输出结果:
- 如果年龄≥18且有票:“欢迎进入剧场!”
- 否则:“抱歉,你不能进入剧场。”
注意事项:
- 使用
and
时,所有条件都必须为真。 - 使用
or
时,只要一个条件为真即可。
2.7 match
语句(Python 3.10及以上版本)
Python 3.10引入了match
语句,为条件判断提供了模式匹配的功能。match
语句类似于其他语言中的switch
语句,但功能更为强大和灵活。
match
语句的基本结构如下:
match value:
case pattern1:
# 执行代码块1
case pattern2:
# 执行代码块2
case _:
# 默认代码块
示例代码:
command = input("请输入指令: ")
match command:
case "start":
print("系统启动中...")
case "stop":
print("系统停止中...")
case "pause":
print("系统暂停中...")
case _:
print("未知指令,请重试。")
输出结果:
- 输入"start":“系统启动中…”
- 输入"stop":“系统停止中…”
- 输入"pause":“系统暂停中…”
- 其他输入:“未知指令,请重试。”
注意事项:
match
语句在Python 3.10及以上版本中可用。- 支持复杂的模式匹配,包括数据解构和守卫条件。
- 在使用时,确保所有可能的输入都被覆盖到,尤其是要有一个默认的处理分支。
3. 实际应用示例
3.1 计算BMI指数
BMI(Body Mass Index,身体质量指数)是用体重和身高计算的一个数值,用于判断一个人是否处于健康体重范围内。它是一个简单但有效的工具来评估体重状况。
BMI计算公式:
[ \text{BMI} = \frac{\text{体重}(kg)}{\text{身高}(m)^2} ]
示例代码:
weight = float(input("请输入你的体重(公斤):"))
height = float(input("请输入你的身高(米):
"))
bmi = weight / (height ** 2)
print(f"你的BMI指数是:{bmi:.2f}")
if bmi < 18.5:
print("体重过轻,请注意营养均衡!")
elif 18.5 <= bmi < 24.9:
print("体重正常,请保持!")
elif 24.9 <= bmi < 29.9:
print("体重超重,请适当运动!")
else:
print("肥胖,请注意健康管理!")
输出结果:
根据输入的体重和身高,程序计算出BMI指数,并给出相应的健康建议:
- BMI < 18.5:“体重过轻,请注意营养均衡!”
- 18.5 <= BMI < 24.9:“体重正常,请保持!”
- 24.9 <= BMI < 29.9:“体重超重,请适当运动!”
- BMI >= 30:“肥胖,请注意健康管理!”
注意事项:
- BMI是一个简单的指标,不能完全代表健康状况。对于一些特殊人群,如运动员和儿童,BMI的解读可能需要更复杂的评估。
- 体重和身高的输入值应为正数,否则可能导致程序异常。
3.2 判断用户年龄的合法性
age = int(input("请输入你的年龄: "))
if age < 18:
print("抱歉,你还未成年。")
elif age <= 65:
print("欢迎参与我们的活动!")
else:
print("祝您晚年幸福,活动对您开放。")
3.3 检查输入的用户名和密码
username = input("请输入用户名: ")
password = input("请输入密码: ")
if username == "admin" and password == "admin":
print("欢迎,管理员!")
elif username == "guest" and password == "guest":
print("欢迎,游客!")
else:
print("用户名或密码错误,请重试。")
4. 总结
在本节中,我们详细介绍了Python中的顺序结构和各种分支结构。顺序结构是程序执行的基础,而分支结构则为程序提供了决策能力,使其能够根据不同的条件采取不同的行动。特别是Python 3.10引入的match
语句,为处理多种模式匹配提供了更简洁和强大的工具。
需要注意的地方:
- 在使用分支结构时,应确保条件逻辑清晰,避免条件重复或遗漏。
- 嵌套过深的分支结构会使代码难以维护,应尽量简化代码或重构。
match
语句的使用使得处理复杂条件变得更为直观,但需确保所有可能情况都有适当处理。
通过理解和掌握这些分支结构,你将能够编写更为灵活和智能的Python程序。在接下来的学习中,我们将继续探索循环结构,这将帮助你更加高效地处理重复任务。希望大家保持学习的热情,如果有任何疑问或想法,欢迎在评论中交流!
参考资料:
- 《Python编程:从入门到实践》
- 《Python基础教程》
如果文章有错误的地方,欢迎指正!大家可以互相交流学习。如果你想获取更多的Python资源或者Python书籍,可以关注微信公众号:全端工程师