首页 > Python资料 博客日记
31-流程控制工具
2024-02-26 07:30:02Python资料围观149次
流程控制工具
三大流程
编程语言中有三大流程,分别是:
- 顺序流程:代码的执行顺序从上到下,从左往右
- 分支流程:(又称选择流程)根据不同的情况执行不同的代码
- 循环流程:程序重复的执行某段代码
当需要设计分支流程与循环流程时,就需要用到流程控制工具了。
分支流程控制工具
if
语句
if
语句用于有条件的执行,语法如下:
if_stmt ::= "if" assignment_expression ":" suite
("elif" assignment_expression ":" suite)*
["else" ":" suite]
if
语句对表达式( assignment_expression
)逐个求值直到找到一个结果为 True
的表达式,并执行与之对应的子句体( suite
),且 if
语句的其他部分不会被执行或求值。如果所有表达式均为 False
,则如果 else
子句体如果存在就会被执行。
实现(implementation)格式如下:
if expression_1:
statement_block_1
elif expression_2:
statement_block_2
else:
statement_block_3
注意:
- 每个条件后面要使用冒号
:
,表示接下来是满足条件后要执行的语句块。 - 使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
- 可以没有
elif
和else
。可以有任意多个elif
。
match
语句 - 3.10
match
语句在3.10版本增加,笔者不是很建议用,因为很多地方可能还没升级到 3.10
语法如下:
match_stmt ::= 'match' subject_expr ":" NEWLINE INDENT case_block+ DEDENT
subject_expr ::= star_named_expression "," star_named_expressions?
| named_expression
case_block ::= 'case' patterns [guard] ":" block
match
后的对象会依次与 case
后的内容进行匹配,如果匹配成功,则执行匹配到的表达式,否则直接跳过,_
可以匹配一切。
实现格式如下:
match subject:
case <pattern_1>:
<action_1>
case <pattern_2> if <expression_1>:
# 需匹配<pattern_2>且<expression_1>为真才会执行
<action_2>
case <pattern_3> | <pattern_4>:
# 可设置多个匹配条件,用 | 隔开
<action_3>
case _: # 一定匹配成功,类似 default
<action_wildcard>
match
语句没有waterfall
效应,即完成一个action_x
后直接结束语句。
循环流程控制工具
在 console 中可以用 ctrl + C
或 ctrl + z
来中断死循环。
while
语句
while
语句在表达式保持为真的情况下重复地执行,语法如下:
while_stmt ::= "while" assignment_expression ":" suite
["else" ":" suite]
while
语句反复的对表达式( assignment_expression
)求值,如果其结果为 True
则执行第一个 suite
,反之如果 else
子句体存在则实行 else
子句体并终止循环。
注意:
- 第一个
suite
中的break
语句在执行时将终止循环且不执行else
子句体。 - 第一个
suite
中的continue
语句在执行时将跳过suite
剩余部分并返回检验表达式。
实现语法如下:
while expr:
statement(s)
else:
additional_statement(s)
for
语句
for
语句用于对序列(例如字符串、元组或列表)或其他可迭代对象中的元素进行迭代,
语法如下:
for_stmt ::= "for" target_list "in" starred_list ":" suite
["else" ":" suite]
starred_list
表达式会被求值一次,返回一个可迭代对象,否则报错。
然后为该对象创建一个迭代器,依次将迭代器返回的数据给目标列表( target_list
),并执行suite
。
迭代器耗尽后,如果存在 else
子句中的代码块,则执行并终结循环。
注意:
- 第一个子句体中的
break
语句在执行时将终止循环且不执行else
子句体。 - 第一个子句体中的
continue
语句在执行时将跳过子句体中的剩余部分并转往下一项继续执行,或者在没有下一项时转往else
子句执行。
实现语法如下:
for i in iterable:
expr1
else:
expr2
实现实例:
for i in range(10):
print(i)
else:
print("Loop finished")
target_list
在循环结束后依然存在,但如果 starred_list
为空,则target_list
不会被赋值,即不存在。
参考资料:
Python 文档:复合语句
Python 文档:更多控制流工具 - if 语句
Python 文档:更多控制流工具 - match 语句
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj