【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. …
  5. 如果所有关系表达式结果都为 False ,就执行else后的语句
  6. 继续执行后续代码

是

否

是

否

是

否

开始

条件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 表达式:
    case 值1:
        语句体1
    case 值2 if 条件表达式: # 条件表达式为 True 且 表达式值为值2
        语句体2
    case 值3 | 值4 : # 匹配值3 或者 值4
        语句体3
    ...
    case _: # 默认操作
        语句体n

对比Java:

switch(表达式){
    case 值1:
        语句体1;
        break;
    case 值2:
        if(条件表达式){
        语句体2;
        }
        break;
    case 值3,值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循环
核心 遍历可迭代对象中的每个元素 在条件保持为真时重复执行
适用场景 一个已知的数据集进行遍历或已知次数的循环 循环次数未知,知道开始结束循环的条件

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

© 版权声明

相关文章