04. 流程控制

news/2024/9/22 22:29:24/文章来源:https://www.cnblogs.com/kurome/p/18426026

一、流程控制

  流程控制就是用来控制程序运行中各语句执行顺序的语句。基本的流程结构为:顺序结构分支结构(或称选择结构),循环结构

  • 顺序结构:程序自上到下执行,中间没有任何判断和跳转;
  • 分支结构:根据条件,选择性的执行某段代码,有 if……elseswitch……case 两种分支语句;
  • 循环结构:根据循环条件,重复性的执行某段代码,有 whiledo……whilefor 三种循环语句;

二、顺序结构

  顺序结构 是 Python 程序默认的执行流程,按照代码的先后顺序,从上到下依次执行,中间没有任何的判断和跳转

顺序结构执行流程

print("你好,世界!")
print("Hello world!")

三、分支结构

  选择语句 也被称为 分支语句,它通过给定的条件进行判断,从而决定执行两个或者多个分支中哪一只。因此,在编写选择语句之前,应该首先明确判断条件是什么,并确定判断结果为“真”或“假”时应分别执行什么样的操作/算法。在 Python 语言中提供了if 语句用来实现分支结构

3.1、if语句的单分支结构

  Python 中使用 if 关键字来组成选择语句。

if 关系表达式:代码块

  执行流程

  1. 首先计算 关系表达式 的值
  2. 如果关系表达式的值为 执行语句体
  3. 如果关系表达式的值为 不执行语句体
  4. 继续执行后面的其它语句

if语句的单分支结构

  代码块中保存着一组代码,同一个代码块中的代码,要都执行要么都不执行。代码块就是一种为代码分组的机制。代码块以缩进开始,直到代码恢复到之前的缩进级别时结束。

num = int(input("请输入一个数:"))
if num > 10: print("你输入的数比10大") print("你输入的数字大于10")
print("你输入的数字是:", num)

  使用 if 语句时,如果只有一条语句,语句块可以直接写到 “:” 的右侧。

num = int(input("请输入一个数:"))
if num > 10: print("你输入的数比10大") 
print("你输入的数字是:", num)

  在 Python 中,if 语句可以使用逻辑运算符来连接多个条件,如果希望所有条件同时满足,则需要使用 and,如果希望只要有一个条件满足即可,则需要使用 or。

num = int(input("请输入一个数:"))
if num < 10 or num > 20: print("你输入的数不在10和20之间")
print("你输入的数字是:", num)
print()num = int(input("请输入一个数:"))
if 10 <= num <= 20: print("你输入的数在10和20之间")
print("你输入的数字是:", num)

Python 对代码的缩进要求非常严格,同一级别的代码块的缩进量必须相同。如果不采用合理的代码缩进,将抛出 SyntaxError 异常;

在 if 结构里面还可以嵌套 if 结构,代码块是可以嵌套的,每增加一个缩进级别,代码块就低一级;

3.2、if语句的双分支结构

if 关系表达式:代码块1
else: 代码块2

  执行流程

  1. 首先计算 关系表达式 的值
  2. 如果关系表达式的值为 就执行 语句体 1
  3. 如果关系表达式的值为 就执行 语句体 2
  4. 继续执行后面的其它语句

if语句的双分支结构

num = int(input("请输入一个数:"))
if num > 10: print("你输入的数比10大") 
else:print("你输入的数不大于10")
print("你输入的数字是:", num)

  if..else 语句可以使用关系表达式进行简化。

语句1 if 条件表达式 else 语句2

  它的执行流程如下:

  • 条件运算符在执行时,会先对条件表达式进行求值判断
    • 如果判断结果为 True,则执行语句 1,并返回执行结果
    • 如果判断结果为 False,则执行语句 2,并返回执行结果
num = int(input("请输入一个数:"))
print("你输入的数比10大") if num > 10 else print("你输入的数不大于10")

3.3、if语句的多分支结构

if 关系表达式1:代码块1;
elif 关系表达式2:代码块2;
……
else:代码块n+1;

  执行流程

  1. 首先计算 关系表达式 1 的值
  2. 如果为 就执行 语句体 1;如果为 就计算 关系表达式 2 的值
  3. 如果为 就执行 语句体 2;如果为 就计算 关系表达式 3 的值
  4. ……
  5. 如果 所有的关系表达式 结果都为 ,就执行 else 子句中的 语句体 n+1
  6. 继续执行其它语句

if语句的多分支结构

num = int(input("请输入一个数:"))
if num > 10: print("你输入的数比10大") 
elif num < 10:print("你输入的数比10小")
else:print("你输入的数等于10")

  else 是一条包罗万象的语句,只要不满足任何 if 和 elif 中的条件测试,其中的代码就会执行。这可能引入无效甚至恶意的数据。如果知道最终要测试的条件,应考虑使用一个 elif 代码块来代替 else 代码块。这样就可以肯定,仅当满足相应的条件时,代码才会执行。

num = int(input("请输入一个数:"))
if num > 10: print("你输入的数比10大") 
elif num < 10:print("你输入的数比10小")
elif num == 10:print("你输入的数等于10")

else 结构是可选的;

if-elif-else 结构中最多只会有一个代码块会执行;

如果多个条件表达式之间是“互斥”关系,哪个判断和执行语句声明在上面还是下面,无所谓;

如果多个条件表达式之间有“交集”关系,需根据实际情况,考虑清除应该将哪个结构写在上面;

如果多个条件表达式之间有 “包含”关系,通常情况下,需要 将范围小的声明在范围大的上面。否则,范围小的没机会执行;

四、循环结构

  循环就是重复的做某件事情;它具有明确的开始和停止标志;一组被重复执行的语句称之为 循环体,能否继续执行,取决于 循环的终止条件。在 Python 中循环分为 for循环while循环;循环结构具有以下四个组成部分:

  1. 初始化部分(init_statement)
  2. 循环条件部分(test_exp)
  3. 循环体部分(body_statement)
  4. 迭代部分(alter_statement)

  通常情况下,循环结构都是因为②中循环条件返回false;

4.1、for循环

  for 循环时一个计次循环,通常适用于枚举或遍历序列,以及迭代对象中的元素。一般应用在循环对象已知的情况下。

for 迭代变量 in 可迭代对象:语句块
else:代码块

  其中,迭代变量用于保存读取出的值;对可迭代对象可以是任何有序的序列对象,如列表、元组、字符串等;

  执行流程

  1. 判断可迭代对象中是否还有项
    • 如果 没有,则循环结束,继续执行后面的其它语句
    • 如果 ,则 执行循环体语句
  2. 下一项
  3. 回到 ① 继续执行 条件判断语句
  4. 如果循环正常结束(即没有被 break 打断的情况下),则执行 else 中的代码块

for循环的执行流程

for element in "Sakura":print(element,end="")
else:print("\n循环执行完毕")print("\n其它语句开始执行")

  for 循环还可以和 range() 函数搭配使用,range() 可以用来生成一个自然数的序列,它有三个参数,第一个参数是 起始位置,可以省略,默认是 0,第二个参数是 结束位置,第三个参数是 步长,也可以省略,默认是 1。

for i in range(0,10,2):print(i)

  步长可以为负,用来实现倒计时的效果。

for i in range(5,-1,-1):print(i)

4.2、while循环

①初始化条件
while ②循环条件:③循环体④迭代条件
else:代码块

  执行流程

  1. 执行 初始化语句
  2. 执行 条件判断语句,看其结果是 真 还是 假
    • 如果是 循环结束,如果循环有 else ,则执行 else 里面的代码块,然后继续执行后面的其它语句
    • 如果是 执行循环体语句
  3. 执行 条件控制语句
  4. 回到②继续执行 条件判断语句
  5. 如果循环正常结束(即没有被 break 打断的情况下),则执行 else 中的代码块

while循环的执行流程

i = 0
while i < 10:print(i)i += 1
else:print("循环执行完毕")print("其它语句执行了")

  在要求满足很多条件才继续运行的程序中,可定义一个变量,用于判断整个程序是否处于活动状态。这个变量称为 标志(flag),充当程序的交通信号等。可以让程序在标志为 True 时继续运行,并在任何时间导致标志为 False 时让程序停止运行。这样,在 while 语句中就只需检查一个条件:标志的当前值是否为 True。然后将所有测试(是否应将标志设置为 False 的事件)都放在其它地方,从而让程序更整洁。

i = 0
flag = Truewhile flag:print(i)i += 1if i == 10:flag = False
else:print("循环执行完毕")print("其它语句执行了")

4.4、无限循环

  while 循环的无限循环:

while True:循环体

4.5、嵌套循环

  将一个循环结构A声明在另一个循环结构B的循环体,就构成了嵌套循环;

  • 外层循环:循环结构B,控制行数
  • 内层循环:循环结构A,控制列数

  内层结构遍历一遍,相当于外层循环循环体执行一次;假设外层循环需要执行 m 次,内层循环需要执行 n 次。此时内层循环的循环体一共执行了 m*n 次;

i = 1
while i <= 9:j = 1while j <= i:print(j, "*", i,"=", i*j, end="\t")j += 1print()i += 1

4.6、跳转语句

  • break结束当前循环,后面不能直接写执行语句,默认跳出包裹此关键字最近的一层循环;
  • continue结束当次循环,后面不能直接写执行语句,默认结束包裹此关键字最近的循环的一次;
i = 0
while(i < 5):i += 1if(i == 3):breakprint("i = ", i)
else:print("循环结束")
i = 0
while(i < 5):i += 1if(i == 3):continueprint("i = ", i)
else:print("循环结束")

break 和 continue 语句只能配合循环语句使用,不能单独和 if 使用;

break 和 continue 都是只对离它最近的循环起作用;

五、pass空语句

  在 Python 中,还有一个 pass 语句,表示空语句,是为了保持程序结构的完整性。它不做任何事情,一般起到占位的作用。在 Python 3 中,我们可以使用 ... 代替 pass 语句。

# 模块,通过模块可以对Python进行扩展
# 引入一个time模块,来统计程序执行时间
from time import *# time()函数可以用来获取当前的时间,返回的单位是秒
begin = time()
num = 100000# 获取num以内的所有质数
i = 2
while i <= num**0.5:flag = Truej = 2while j < i:if i % j == 0:# 一旦进入判断,则证明i一定不是质数flag = False# 此时内循环没有继续执行的必要# 使用break提前退出循环breakj += 1if flag:pass# print(i)i += 1   end  = time()
print("花费的时间:", end - begin, "秒")  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/801745.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS 7 虚拟机连接网络

CentOS 7 虚拟机连接网络 检查网络 ping www.baidu.com切换 root 用户 su查看网卡名 ip addr激活网卡 vim /etc/sysconfig/network-scripts/ifcfg-ens33重启网络 service network restart

execve

目录glibc glibc execve() 执行由 pathname 指定的程序。这会导致当前正在被调用进程运行的程序被一个新程序替换,且该新程序会重新初始化栈、堆,以及(已初始化和未初始化的)数据段。

freeRTOS源码解析4--tasks.c 5

4.2.13 继续任务--vTaskResume 接口:void vTaskResume( TaskHandle_t xTaskToResume )形参1:xTaskToResume ,想要继续的任务handle; 首先是vTaskResume调用的一个内部函数:static BaseType_t prvTaskIsTaskSuspended( const TaskHandle_t xTask ),用于检查任务是否是挂起…

MySQL 必知概念

Delete、Drop 和 Truncatedelete、truncate 仅仅删除表里面的数据,drop会把表的结构也删除 delete 是 DML 语句,操作完成后,可以回滚,truncate 和 drop 是 DDL 语句,删除之后立即生效,不能回滚 执行效率:drop > truncate > deleteMyISAM 与 InnoDBInnoDB 支持事务…

视野修炼-技术周刊第102期 | js 编译运行C

① Bun 现在允许直接在js中直接编译运行 C ! ② caniuse-cli ③ SSL证书管理工具 ④ 好的重构与坏的重构 ⑤ sisi - 命令行图片检索工具 ⑥ cvbee.ai - AI 简历生成欢迎来到第 102 期的【视野修炼 - 技术周刊】,下面是本期的精选内容简介 🔥强烈推荐Bun 现在允许直接在js中…

【vulhub】Discuz-命令执行 wooyun-2010-080723

【vulhub】Discuz-命令执行 wooyun-2010-080723 ​docker-compose up-d​启动! ​​ wooyun-2010-080723 命令执行 0x01 搭建环境 访问192.168.132.138:8080/install​,安装数据库。数据库服务器填写db(必须db,不然安装失败),数据库名为discuz,数据库账号密码均为root,…

华科python与人工智能实践(公选)教程

python基础 软件下载 1.python下载安装 点击此链接进入官网windows下载地址点击箭头处链接下载最新版本,进入页面后下拉根据你的机器下载对应版本,一般人使用的是X86架构windos系统,下载箭头所指即可 若是不知道CPU架构,可见查看cpu架构,x86还是arm 下载后根据指引进行安装…

2376.统计特殊整数

如果一个正整数每一个数位都是 互不相同 的,我们称它是 特殊整数 。 给你一个 正 整数 n ,请你返回区间 [1, n] 之间特殊整数的数目。 示例 1: 输入:n = 20 输出:19 解释:1 到 20 之间所有整数除了 11 以外都是特殊整数。所以总共有 19 个特殊整数。 示例 2: 输入:n = …

数业智能心大陆:职场倦怠的新解法

什么是职业倦怠? 在职场中,职业倦怠的表现形式丰富多样。从数业智能心大陆 AI 心理咨询平台的数据来看,职业倦怠呈现出多种状态。教师可能对教学不再满怀热情,精心备课也成为过去式;情绪上容易烦躁、易怒,在工作压力之下,常常因为一些小事就被激怒。比如在项目团队中,成…

2024“华为杯”数模研赛E数据提取代码

2024年数学建模研究生赛E题从视频中提取数据的代码。主要包括三个部分:车流量计算、各车道车流量计算和平均速度计算。主要讲述了代码的使用方法,包括需要修改的参数和文件路径,以及一些特殊情况的处理方法。同时还提供了参数估计和绘图的相关代码,以及如何根据不同视频视角…

用Eide下配合Cubemx配置stm32环境

PS:本篇为个人学习的记录,一是方便回忆,二是相同时方便给像我一样的小白一点建议。本文默认已安装好STM32Cubemx和VSCode,以及VsCode下的Eide Cubemx部分选择好需要使用的对应单片机创建工程。在Project Manager选项下 选择Toolchain/IDE下的makefile方式来创建工程。什么是…

USB2.0设备的休眠挂起及远程唤醒

USB可见设备状态,分为连接(Attached),上电(Powered),默认(Default),地址(Address),配置(Configured)和挂起(Suspended)6个状态。所谓可见,即USB系统和主机可见的状态,其他状态属于USB设备内部而不可见。其中有关电源的,大致可分下面三类:连接状态(Attached):设备连…