翼度科技»论坛 编程开发 python 查看内容

31-流程控制工具

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
流程控制工具

三大流程

编程语言中有三大流程,分别是:

  • 顺序流程:代码的执行顺序从上到下,从左往右
  • 分支流程:(又称选择流程)根据不同的情况执行不同的代码
  • 循环流程:程序重复的执行某段代码
当需要设计分支流程与循环流程时,就需要用到流程控制工具了。
分支流程控制工具

if 语句

if 语句用于有条件的执行,语法如下:
  1. if_stmt ::=  "if" assignment_expression ":" suite
  2.              ("elif" assignment_expression ":" suite)*
  3.              ["else" ":" suite]
复制代码
if 语句对表达式( assignment_expression )逐个求值直到找到一个结果为 True 的表达式,并执行与之对应的子句体( suite ),且 if 语句的其他部分不会被执行或求值。如果所有表达式均为 False,则如果 else 子句体如果存在就会被执行。
实现(implementation)格式如下:
  1. if expression_1:
  2.     statement_block_1
  3. elif expression_2:
  4.     statement_block_2
  5. else:
  6.     statement_block_3
复制代码
注意:

  • 每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
  • 使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
  • 可以没有 elif 和 else。可以有任意多个 elif。
match 语句 -  3.10

match 语句在3.10版本增加,笔者不是很建议用,因为很多地方可能还没升级到 3.10
语法如下:
  1. match_stmt   ::=  'match' subject_expr ":" NEWLINE INDENT case_block+ DEDENT
  2. subject_expr ::=  star_named_expression "," star_named_expressions?
  3.                   | named_expression
  4. case_block   ::=  'case' patterns [guard] ":" block
复制代码
match 后的对象会依次与 case 后的内容进行匹配,如果匹配成功,则执行匹配到的表达式,否则直接跳过,_ 可以匹配一切。
实现格式如下:
  1. match subject:
  2.     case <pattern_1>:
  3.         <action_1>
  4.     case <pattern_2> if <expression_1>:
  5.         # 需匹配<pattern_2>且<expression_1>为真才会执行
  6.         <action_2>
  7.     case <pattern_3> | <pattern_4>:
  8.         # 可设置多个匹配条件,用 | 隔开
  9.         <action_3>
  10.     case _: # 一定匹配成功,类似 default
  11.         <action_wildcard>
复制代码
match语句没有waterfall效应,即完成一个action_x后直接结束语句。
循环流程控制工具

console 中可以用 ctrl + C 或 ctrl + z 来中断死循环。
while 语句

while 语句在表达式保持为真的情况下重复地执行,语法如下:
  1. while_stmt ::=  "while" assignment_expression ":" suite
  2.                 ["else" ":" suite]
复制代码
while 语句反复的对表达式( assignment_expression )求值,如果其结果为 True 则执行第一个 suite,反之如果 else 子句体存在则实行 else 子句体并终止循环。
注意:

  • 第一个 suite 中的 break 语句在执行时将终止循环且不执行 else 子句体。
  • 第一个 suite 中的 continue 语句在执行时将跳过 suite 剩余部分并返回检验表达式。
实现语法如下:
  1. while expr:
  2.     statement(s)
  3. else:
  4.     additional_statement(s)
复制代码
for语句

for 语句用于对序列(例如字符串、元组或列表)或其他可迭代对象中的元素进行迭代,
语法如下:
  1. for_stmt ::=  "for" target_list "in" starred_list ":" suite
  2.               ["else" ":" suite]
复制代码
starred_list 表达式会被求值一次,返回一个可迭代对象,否则报错。
然后为该对象创建一个迭代器,依次将迭代器返回的数据给目标列表( target_list ),并执行suite。
迭代器耗尽后,如果存在 else 子句中的代码块,则执行并终结循环。
注意:

  • 第一个子句体中的 break 语句在执行时将终止循环且不执行 else 子句体。
  • 第一个子句体中的 continue 语句在执行时将跳过子句体中的剩余部分并转往下一项继续执行,或者在没有下一项时转往 else 子句执行。
实现语法如下:
  1. for i in iterable:
  2.     expr1
  3. else:
  4.     expr2
复制代码
实现实例:
  1. for i in range(10):
  2.     print(i)
  3. else:
  4.     print("Loop finished")
复制代码
target_list 在循环结束后依然存在,但如果 starred_list 为空,则target_list 不会被赋值,即不存在。
参考资料:

Python 文档:复合语句

Python 文档:更多控制流工具 - if 语句

Python 文档:更多控制流工具 - match 语句


来源:https://www.cnblogs.com/wanderoff-night/p/18033473
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具