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

04. 流程控制

时间:2024-09-22 22:23:46浏览次数:7  
标签:语句 控制 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/18426026

相关文章

  • Ubuntu24.04安装及初始化配置
    一、系统简介Ubuntu基于debian以桌面应用为主的开源操作系统,长期支持版本LTS通常每两年发布一次,如最新的版本24.04,上一个版本22.04,每个版本有5年支持周期,适合企业生产服务器使用,另外对容器支持较好,很多docker基础镜像采用utuntu。国产替代操作系统基于debian的有银河麒麟V10、统信U......
  • codeforces 1041 C. Coffee Break
    题意第一行输入三个整数\(n,m,d(1\leqn\leq2*10^5,n\leqm\leq10^9,1\leqd\leqn)\),第二行输入\(n\)个整数,保证每个数均不大于\(m\)。在每一天你都可以任意选择一个未选过的数\(a_i\),随后可以继续选任意一个大于\(a_i+d\)的数\(a_j\);接下来可以再选任意......
  • 小美的数组合并(美团20240427年暑期实习笔试真题)
    题目:小美的数组合并小美拿到了一个数组,她每次操作可以将两个相邻元素ai合并为一个元素,合并后的元素为原来两个元素之和。小美希望最终数组的最小值不小于k。她想知道有多少种不同的合并结果?输入描述第一行输入两个正整数n,k,代表数组大小和数组的最大值。第二行输入个正整数ai,......
  • Day 22 回溯法part04| LeetCode 491.递增子序列,46.全排列,47.全排列 II
    491.递增子序列491.非递减子序列classSolution{publicList<Integer>path=newLinkedList<>();publicList<List<Integer>>res=newArrayList<>();publicList<List<Integer>>findSubsequences(int[......
  • 进程控制2
    使用waitpid(pid,status,0);填入子进程的pid,阻塞父进程,直到子进程结束了,然后把子进程的pcb结构体的状态码读取出来。使用WIFEXITED(status)判断子进程是否正常退出,WEXITSTATUS(status)读取退出码来判断运行是否正常结束。因为进程结束有3种情况:1.进程正常退出,并正确结束。2......
  • [51单片机 PROTEUS仿真设计]基于温度传感器的恒温控制系统
    目录一、主要功能二、硬件资源三、程序编程四、实现现象一、主要功能基于51单片机,具有晶振电路、复位电路、DS18B20温度传感器、LED灯和蜂鸣器灯光报警模块、LCD1602显示模块、L298N驱动电机散热模块和按键模块。主要功能:系统开始运行,显示屏显示最大温度阈值和最小......
  • Fix Wi-Fi for Intel Wi-Fi 6 AX201 on Ubuntu 18.04---GPT
    Certainly!Here'sastep-by-stepguideyoucandocumentonyourblogtohelpyoueasilysetuptheIntelWi-Fi6AX201onyourThinkPadwhenreinstallingUbuntu18.04.HowtoFixWi-FiforIntelWi-Fi6AX201onUbuntu18.04IfyoureinstallUbuntu......
  • 【洛谷】P10417 [蓝桥杯 2023 国 A] 第 K 小的和 的题解
    【洛谷】P10417[蓝桥杯2023国A]第K小的和的题解题目传送门题解CSP-S1补全程序,致敬全A的答案,和神奇的预言家。写一下这篇的题解说不定能加CSP2024的RP代码#include<bits/stdc++.h>#definelowbit(x)x&(-x)#defineendl"\n"usingnamespacestd......
  • 数据飞轮的演进与实践:探索出行行业的数据聚类和流程优化
    在当今的数据驱动时代,从数据仓库的构建到数据中台的发展,再到数据飞轮的形成,每一个阶段都是对大数据技术的深度挖掘和运用。在出行行业,这种技术的演化尤为显著,涉及到的技术层面包括数据采集、分析、流计算等多个方面。在这篇文章中,我们将深入探讨如何在出行行业应用这些技术,通过具体......
  • 编译流程背后的一些技术细节
    在c#语言中,中间代码是如何被转换为特定平台的机器码的在C#语言中,中间代码是通过.NET框架中的**公共语言运行时(CommonLanguageRuntime,CLR)**转换为特定平台的机器码的。这个过程涉及几个关键步骤,主要包括编译、JIT编译和执行。以下是详细的解释:1.源代码编译成中间语言(I......