Python基础——分支结构

Python基础------分支结构

    • 前言
    • [1. 顺序结构](#1. 顺序结构)
    • [2. 分支结构](#2. 分支结构)
      • [2.1 单分支结构](#2.1 单分支结构)
      • [2.2 双分支结构](#2.2 双分支结构)
      • [2.3 多分支结构](#2.3 多分支结构)
      • [2.4 嵌套分支结构](#2.4 嵌套分支结构)
      • [2.5 条件表达式(也称为三元运算符)](#2.5 条件表达式(也称为三元运算符))
      • [2.6 组合条件](#2.6 组合条件)
      • [2.7 `match`语句(Python 3.10及以上版本)](#2.7 match语句(Python 3.10及以上版本))
    • [3. 实际应用示例](#3. 实际应用示例)
      • [3.1 计算BMI指数](#3.1 计算BMI指数)
      • [3.2 判断用户年龄的合法性](#3.2 判断用户年龄的合法性)
      • [3.3 检查输入的用户名和密码](#3.3 检查输入的用户名和密码)
    • [4. 总结](#4. 总结)

前言

在编写程序时,控制流结构至关重要,它决定了程序的执行路径。Python中的控制流结构主要包括顺序结构、分支结构和循环结构。本节将详细介绍顺序结构和分支结构,帮助你更好地理解如何控制程序的执行顺序。

1. 顺序结构

顺序结构是程序中最基本的控制流。它指的是程序按照代码的书写顺序,从上到下依次执行每一条语句,直到程序结束或遇到其他控制流结构。顺序结构通常用于简单的任务执行,如打印日志信息、计算数学表达式等。

示例代码

python 复制代码
print("程序开始")
name = input("请输入你的名字: ")
print(f"你好, {name}")
print("程序结束")

输出:

复制代码
程序开始
请输入你的名字: 小明
你好, 小明
程序结束

在这个例子中,程序按顺序执行:首先输出"程序开始",然后读取用户输入的名字,接着输出问候语,最后输出"程序结束"。每一条语句都是按顺序执行的,没有跳过或重复。

2. 分支结构

分支结构使得程序可以根据条件来选择执行不同的路径。这种结构允许程序做出决策,是编写动态和智能程序的关键。

分支结构包括:

  • 单分支结构:根据一个条件决定是否执行某个代码块。
  • 双分支结构:根据一个条件决定执行两个代码块中的一个。
  • 多分支结构:根据多个条件选择执行不同的代码块。
  • 嵌套分支结构:在一个分支结构内部再包含另一个分支结构。
  • 条件表达式:简洁的条件操作方式。
  • 组合条件:使用逻辑运算符组合多个条件。
  • match语句:Python 3.10及以上版本的模式匹配。

2.1 单分支结构

单分支结构仅在条件为真时执行特定的代码块,否则不执行任何操作。

python 复制代码
temperature = 30

if temperature > 25:
    print("天气很热,记得多喝水!")

输出结果:

复制代码
天气很热,记得多喝水!

注意事项:

  • 单分支结构适用于当条件不满足时无需执行其他操作的情况。
  • 如果条件永远为假,代码块将永远不会执行。

2.2 双分支结构

双分支结构在条件为真时执行一个代码块,在条件为假时执行另一个代码块。

python 复制代码
user_input = input("请输入你的名字: ")

if user_input:
    print(f"你好, {user_input}!")
else:
    print("你好,陌生人!")

输出结果:

根据用户输入:

  • 如果输入了名字:"你好, [用户输入的名字]!"
  • 如果未输入名字:"你好,陌生人!"

注意事项:

  • else部分是可选的,但如果存在,则if条件为假时会执行else部分的代码。

2.3 多分支结构

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

python 复制代码
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 嵌套分支结构

嵌套分支结构在一个分支结构内部包含另一个分支结构,用于处理更加复杂的条件判断。

python 复制代码
temperature = int(input("请输入当前温度: "))
humidity = int(input("请输入当前湿度: "))

if temperature > 30:
    if humidity > 70:
        print("天气闷热,请注意防暑降温!")
    else:
        print("天气炎热,请保持通风!")
else:
    if humidity > 70:
        print("天气潮湿,请注意防潮!")
    else:
        print("天气舒适,享受美好的一天!")

输出结果:

根据温度和湿度的组合,输出不同的建议:

  • 高温高湿:"天气闷热,请注意防暑降温!"
  • 高温低湿:"天气炎热,请保持通风!"
  • 低温高湿:"天气潮湿,请注意防潮!"
  • 低温低湿:"天气舒适,享受美好的一天!"

注意事项:

  • 嵌套过深的分支结构会使代码变得复杂难读,建议保持层次清晰。
  • 尽量避免嵌套层次过深,可以考虑重构代码或使用其他控制结构。

2.5 条件表达式(也称为三元运算符)

条件表达式提供了一种简洁的条件判断方式,非常适合在一行代码中进行简单的条件判断。

python 复制代码
age = int(input("请输入你的年龄: "))
status = "成年" if age >= 18 else "未成年"
print(f"你是{status}。")

输出结果:

  • 如果年龄≥18:"你是成年。"
  • 如果年龄<18:"你是未成年。"

注意事项:

  • 使用条件表达式时,确保代码简洁清晰。
  • 适合用在简单的条件判断和赋值场景。

2.6 组合条件

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

python 复制代码
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语句的基本结构如下:

python 复制代码
match value:
    case pattern1:
        # 执行代码块1
    case pattern2:
        # 执行代码块2
    case _:
        # 默认代码块

示例代码:

python 复制代码
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}

示例代码:

python 复制代码
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 判断用户年龄的合法性

python 复制代码
age = int(input("请输入你的年龄: "))

if age < 18:
    print("抱歉,你还未成年。")
elif age <= 65:
    print("欢迎参与我们的活动!")
else:
    print("祝您晚年幸福,活动对您开放。")

3.3 检查输入的用户名和密码

python 复制代码
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 : 最长连续序列
java·数据结构·c++·python·算法·leetcode·tornado
火云洞红孩儿6 分钟前
2026年,用PyMe可视化编程重塑Python学习
开发语言·python·学习
2401_841495648 分钟前
【LeetCode刷题】两两交换链表中的节点
数据结构·python·算法·leetcode·链表·指针·迭代法
幻云20108 分钟前
Next.js 之道:从入门到精通
前端·javascript·vue.js·人工智能·python
SunnyDays101112 分钟前
使用 Python 自动查找并高亮 Word 文档中的文本
经验分享·python·高亮word文字·查找word文档中的文字
深蓝电商API17 分钟前
Selenium处理弹窗、警报和验证码识别
爬虫·python·selenium
深蓝电商API22 分钟前
Selenium模拟滚动加载无限下拉页面
爬虫·python·selenium
小王子102426 分钟前
Redis Queue 安装与使用
redis·python·任务队列·rq·redis queue
人工智能AI技术28 分钟前
【Agent从入门到实践】26 使用Chroma搭建本地向量库,实现Agent的短期记忆
人工智能·python
赤狐先生30 分钟前
第三步--根据python基础语法完成一个简单的深度学习模拟
开发语言·python·深度学习