首页 > 其他分享 >04. 流程控制

04. 流程控制

时间:2024-09-14 19:36:09浏览次数:1  
标签:语句 控制 num 04 10 流程 循环 print 执行

一、流程控制

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

  • 顺序结构:程序自上到下执行,中间没有任何判断和跳转;
  • 分支结构:根据条件,选择性的执行某段代码,有 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 = True

while flag:
    print(i)
    i += 1
  
    if 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 = 1
    while j <= i:
        print(j, "*", i,"=", i*j, end="\t")
        j += 1
    print()
    i += 1

4.6、跳转语句

  • break结束当前循环,后面不能直接写执行语句,默认跳出包裹此关键字最近的一层循环;
  • continue结束当次循环,后面不能直接写执行语句,默认结束包裹此关键字最近的循环的一次;
i = 0
while(i < 5):
    i += 1
    if(i == 3):
        break
    print("i = ", i)
else:
    print("循环结束")
i = 0
while(i < 5):
    i += 1
    if(i == 3):
        continue
    print("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 = True
    j = 2
    while j < i:
        if i % j == 0:
            # 一旦进入判断,则证明i一定不是质数
            flag = False
            # 此时内循环没有继续执行的必要
            # 使用break提前退出循环
            break
        j += 1
    if flag:
        pass
        # print(i)
    i += 1   

end  = time()
print("花费的时间:", end - begin, "秒")  

标签:语句,控制,num,04,10,流程,循环,print,执行
From: https://www.cnblogs.com/kurome/p/18414589

相关文章

  • 「数学::质数」埃氏筛|欧拉筛(埃拉托斯特尼筛法|线性筛法)/ LeetCode 204(C++)
    目录概述1.埃氏筛思路复杂度Code2.欧拉筛(线性筛)思路复杂度Code总结概述上一节我们介绍了对判断一个数是否为质数的方法:「数学::质数」试除法/LuoguP5736(C++)那如果我们期望输出一个范围内的所有质数,使用试除法的时间复杂度是n√n,怎么办呢?LeetCode204:给定整......
  • MAST20004 Probability
    MAST20004ProbabilitySemester2,2024Assignment3:QuestionsDue4pm,Wednesday18SeptemberImportantinstructions:(1)Thisassignmentcontains4questions,twoofwhichwillberandomlyselectedtobemarked.Eachmarkedquestionisworth10points......
  • WordPress加载流程的解读分析
    index.php```php<?php/**这个文件只用来加载'/wp-blog-header.php'**@packageWordPress//**声明一个全局变量,用来判断是否加载主题**@varbool/define('WP_USE_THEMES',true);/*加载WordPress环境和模板/requireDIR.'/wp-blog-header.php';```wp......
  • 数据资产入表全流程解析,助力企业数据要素价值释放
    数据资产入表即数据资产会计核算,指的是把有价值的数据编制进资产负债表,作为企业沉淀的无形资产,让数据要素的交易流通变得合规,数据价值可计算。2023年8月21日,财政部发布《企业数据资源相关会计处理暂行规定》,并于2024年1月1日开始实施,首次将数据资源纳入企业会计核算体系,明确了数据......
  • 合宙Air201模组LuatOS:远程控制
    很多小伙伴已经学习了前两期教程helloworld、点灯,对合宙Air201这款低功耗资产定位模组的LuatOS开发已有一定了解,大家的实操反馈是:真的很简单!那么,这一期我们要一起体验更有趣的——远程控制点灯!Air201远程控制点灯教程  合宙Air201资产定位模组——是一个集成超低功耗4G通信、语......
  • WordPress加载流程的解读分析
    index.php```php<?php/**这个文件只用来加载'/wp-blog-header.php'**@packageWordPress//**声明一个全局变量,用来判断是否加载主题**@varbool/define('WP_USE_THEMES',true);/*加载WordPress环境和模板/requireDIR.'/wp-blog-header.php';```wp......
  • 谷歌个人开发者账号申请流程
    需支付25美金用于创建Google开发者账号的,Google账号只能使用Visa、Master、JCB、运通卡或Discover(国内用户建议使用招商的信用卡,其他行的支付有时会不成功),只需支付一次,即可永久使用创建Play管理中心开发者账号所需的必要信息https://support.google.com/googleplay/android-devel......
  • 基于java基于BS结构下的OA流程可视化的研究与实现的计算机毕设源码+论文
    B/S结构下的OA流程可视化的研究与实现摘  要工作流是指整个或部分业务流程在计算机支持下的全自动或半自动化。在计算机网络环境下,工作任务在多个人或单位之间的流转实际上将表现为信息或数据在多个人之间的传送。使用可视化的OA工作流设计工具,用户不需要编程就可以定义设计出满......
  • springboot企业门户资讯网站-计算机毕业设计源码04252
    摘 要在当今数字化时代,企业门户资讯网站已成为企业展示形象、传递信息、吸引客户的重要渠道。随着技术的不断发展,传统的网站开发方式已经无法满足现代企业的需求。因此,基于SpringBoot技术的企业门户资讯网站应运而生,旨在为企业提供一个高效、灵活、可扩展的网站解决方案。......
  • 负载均衡:从理论到实践 ---day04
    负载均衡负载均衡1.什么是负载均衡2.负载均衡的分类硬件负载均衡软件负载均衡选择3.引入负载均衡的好处第一个Ribbon实例步骤1:步骤2:步骤3:步骤4:问题1.负载均衡的主要目标是什么?2.负载均衡器的作用是什么?3.常用的负载均衡算法有哪些?请解释其中一两种。4.什么是会话......