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 多分支结构

多分支结构使用ifelifelse,可以处理多个条件。

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 组合条件

组合条件使用逻辑运算符(andornot)来检查多个条件。

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书籍,可以关注微信公众号:全端工程师

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值