【Python基础|Day02】流程控制语句

文章目录

  • 📚今日学习目标
  • 第一部分:控制流程概述
  • 第二部分:分支结构详解
    • 2.1 if 语句
      • 2.1.1 基本格式与执行流程:
      • 2.1.2 重要注意事项:
    • 2.2 match…case语句
      • 2.2.1 基本格式与执行流程:
      • 2.2.2 重要注意事项:
    • 2.3 分支结构对比
  • 第三部分:循环结构详解
    • 3.1 for循环
    • 3.2 while循环
    • 3.3 循环结构对比

📚今日学习目标

通过本篇文章,你将能够:

  1. 理解程序控制流程的三种基本结构:顺序、分支和循环
  2. 掌握 if 语句的三种格式及其执行流程
  3. 掌握 match…case 语句的格式与执行流程
  4. 掌握 for 循环的格式与执行流程
  5. 掌握 while 循环的格式与执行流程
  6. 能够根据实际需求选择合适的控制结构(分支或循环)来解决问题。

✨注:本文的结构与 Java 学习笔记(Day03)保持一致,有助于进行对比学习。


第一部分:控制流程概述

程序控制流程分为三大类:

结构类型 描述 Python 语法 适用场景
顺序结构 默认执行流程,代码按编写顺序自上而下依次执行 无特殊语法 所有程序的基础流程
分支结构 根据不同条件选择执行不同代码块 if, match…case 条件判断、多路选择
循环结构 重复执行特定代码块直到条件不满足 for, while 重复操作、遍历数据

第二部分:分支结构详解

2.1 if 语句

2.1.1 基本格式与执行流程:

格式一:单分支结构—如果条件成立就执行代码语句

if 关系表达式:
    语句体

对比Java:

if(关系表达式){
    语句体;
}

执行流程

  1. 先计算关系表达式的值
  2. 如果值为 True,则执行语句体
  3. 如果值为 False,则跳过语句体
  4. 继续执行后续代码

开始

条件为真?

执行代码块

后续代码

格式二:双分支结构—如果条件成立就执行代码语句1,否则就执行代码语句2

if 关系表达式:
    语句体1
else:
    语句体2

对比Java:

if(关系表达式){
    语句体1;
}else{
    语句体2;
}

执行流程

  1. 先计算关系表达式的值
  2. 如果值为 True,则执行 语句体1
  3. 如果值为 False,则执行 语句体2
  4. 继续执行后续代码

开始

条件为真?

语句体1

后续代码

语句体2

格式三:多分支结构—存在多种不同情况执行对应情况的语句体

if 关系表达式1:
    语句体1
elif 关系表达式2:
    语句体2
...
else:
    语句体

对比Java:

if(关系表达式1){
    语句体1;
}else if(关系表达式2){
    语句体2;
}
...
else{
    语句体;
}

执行流程

  1. 先计算关系表达式1的值
  2. 如果关系表达式1的值为 True 就执行语句体1,如果为 False 就计算关系表达式2的值
  3. 如果关系表达式2的值为 True 就执行语句体2,如果为 False 就计算关系表达式3的值
  4. 如果所有关系表达式结果都为 False ,就执行else后的语句
  5. 继续执行后续代码

开始

条件1?

块1

条件2?

块2

条件n?

块n

else块

后续代码

2.1.2 重要注意事项:

  1. 布尔变量的简洁写法:对于一个布尔量,尽量不要用" == "来判断,直接写在括号中即可。即:对于一个布尔变量 flag,判断其为真时,推荐直接写 if flag:,而不是 if flag == True:。
  2. 执行顺序特性:if 结构中,条件判断从上到下进行,一旦某个条件满足,执行对应代码块后立即退出,不再检查后续条件。
  3. else 子句是可选的:当不需要处理所有条件都不满足的情况时,可以省略。
  4. 语法格式的强调事项

    • 冒号:每个 if、elif、else 后面都必须有英文冒号 :
    • 缩进:Python 使用缩进(通常是 4 个空格)来定义代码块的归属。归属于 if 的语句必须严格保持相同的缩进级别。

2.2 match…case语句

2.2.1 基本格式与执行流程:

match 表达式:
    case1:
        语句体1
    case2 if 条件表达式: # 条件表达式为 True 且 表达式值为值2
        语句体2
    case3 |4 : # 匹配值3 或者 值4
        语句体3
    ...
    case _: # 默认操作
        语句体n

对比Java:

switch(表达式){
    case1:
        语句体1;
        break;
    case2:
        if(条件表达式){
        语句体2;
        }
        break;
    case3,4:
        语句体3;
    ...
    default:
        语句体n;
        break;
}

执行流程:

  1. 先计算表达式的值
  2. 依次和case后面的模式比较,如果匹配成功,就会执行相应语句,并结束匹配。Python自动break,不需要显式写
  3. 如果所有case(除 case_)均不匹配,就会执行case_里面的语句,然后结束整个match语句

是且条件为真

否或条件为假

开始

计算表达式值

匹配 case 值1?

执行语句体1

自动结束匹配

结束match

匹配 case 值2 if 条件?

执行语句体2

自动结束匹配

匹配其他case?

执行对应语句体

自动结束匹配

执行 case_ 默认语句体

自动结束匹配

后续代码

2.2.2 重要注意事项:

特性 Python
match-case
Java
switch
本质 模式匹配: 不仅可以匹配值,还可以匹配类型、结构,并解构数据 多路选择:检查数据的"值",主要用于对同一变量的等值比较
匹配对象 任意数据类型(值、类型、列表、字典等结构化数据) 基本类型(int, char等)、枚举、字符串
核心能力 结构解构 + 类型检查 + 值匹配 值匹配为主

2.3 分支结构对比

  • 使用 if 语句:适合条件判断涉及范围比较、复杂的布尔逻辑组合、条件依赖于多个变量的场景。
  • 使用match…case语句:适合基于单个变量与多个固定的、离散的值进行等值匹配的场景,尤其是匹配类型或解构数据时。

第三部分:循环结构详解

3.1 for循环

格式
在 Python 中,for 循环本质上是一种遍历机制,用于对任何可迭代对象(如列表、字符串、字典等)进行逐个处理。

for 元素 in 待处理数据集:
    循环体
else: # 可选部分
    循环正常结束后执行的代码(未被 break 中断)

对比Java:

for(初始化语句;条件表达式;条件控制语句){
     循环体;
}

执行流程

  1. 从可迭代对象中按顺序“取出”下一个元素
  2. 将该元素赋值给循环变量,并执行循环体
  3. 重复步骤 1-2,直到所有元素都被处理完毕
  4. 如果循环完整地遍历了所有元素(即未被 break 语句中途跳出),则执行可选的 else 子句


(被break)

开始

获取下一个元素

元素存在?

将元素赋给循环变量

执行循环体

循环正常结束?

执行 else 块

结束

3.2 while循环

格式

while 条件表达式:
    循环体
else: # 可选部分
    循环正常结束后执行的代码(未被 break 中断)

对比Java:

初始化语句 ;
while(条件表达式){
    循环体 ;
    条件控制语句 ;
}

执行流程

  1. 计算条件表达式的值
  2. 如果值为 True,则执行循环体;如果值为 False,则跳转到步骤 4
  3. 执行完循环体后,返回步骤 1
  4. 如果循环是因条件变假而正常结束(未被 break 中断),则执行可选的 else 子句。


(被break)

开始

条件表达式
是否为真?

执行循环体

循环正常结束?

执行 else 块

结束循环
继续后续代码

3.3 循环结构对比

特性 for循环 while循环
核心 遍历可迭代对象中的每个元素 在条件保持为真时重复执行
适用场景 一个已知的数据集进行遍历或已知次数的循环 循环次数未知,知道开始结束循环的条件

以上为个人学习总结,旨在梳理个人理解。如有疏漏或不当之处,欢迎指正与交流。

© 版权声明

相关文章