当前位置 : 主页 > 编程语言 > python >

Python基础 -- 流程控制

来源:互联网 收集:自由互联 发布时间:2022-08-10
目录 ​​程序的三大流程​​ ​​分支结构​​ ​​程序中的判断​​ ​​判断的定义​​ ​​if 判断语句基本语法​​ ​​else 处理条件不满足的情况​​ ​​逻辑运算​​ ​​


目录

  • ​​程序的三大流程​​
  • ​​分支结构​​
  • ​​程序中的判断​​
  • ​​判断的定义​​
  • ​​if 判断语句基本语法​​
  • ​​else 处理条件不满足的情况​​
  • ​​逻辑运算​​
  • ​​`and`​​
  • ​​`or`​​
  • ​​`not`​​
  • ​​if 语句进阶​​
  • ​​`elif`​​
  • ​​`if` 的嵌套​​
  • ​​循环结构​​
  • ​​while循环​​
  • ​​`while` 循环基本使用​​
  • ​​`while` 语句基本语法​​
  • ​​死循环​​
  • ​​Python 中的计数方法​​
  • ​​循环计算​​
  • ​​需求进阶​​
  • ​​break 和 continue​​
  • ​​break​​
  • ​​continue​​
  • ​​`while` 循环嵌套​​
  • ​​for循环​​
  • ​​for语句基本语法​​
  • ​​序列​​
  • ​​元组与字符串​​
  • ​​range()​​
  • ​​能转换成序列的数据​​
  • ​​zip()​​
  • ​​enumerate()​​

程序的三大流程

  • 在程序开发中,一共有三种流程方式:
  • 顺序——从上向下,顺序执行代码
  • 分支—— 根据条件判断,决定执行代码的分支
  • 循环—— 让特定代码 重复执行

Python基础 -- 流程控制_数据

分支结构

程序中的判断

Python基础 -- 流程控制_开发语言_02

if 今天发工资:

先还信用卡的钱

if 有剩余:

又可以happy了,O(∩_∩)O哈哈~

else:

噢,no。。。还的等30天
else:

判断的定义

  • 如果条件满足,才能做某件事情,
  • 如果条件不满足,就做另外一件事情,或者什么也不做

正是因为有了判断,才使得程序世界丰富多彩,充满变化!

判断语句 又被称为 “分支语句”,正是因为有了判断,才让程序有了很多的分支

if 判断语句基本语法

在 ​​Python​​ 中,if 语句 就是用来进行判断的,格式如下:

if 要判断的条件:

注意:代码的缩进为一个 ​​tab​​ 键,或者 4 个空格 —— 建议使用空格

  • 在 Python 开发中,Tab 和空格不要混用!

我们可以把整个 if 语句看成一个完整的代码块

Python基础 -- 流程控制_数据_03

else 处理条件不满足的情况

思考

在使用 ​​if​​ 判断时,只能做到满足条件时要做的事情。那如果需要在 不满足条件的时候,做某些事情,该如何做呢?

答案

​​else​​,格式如下:

if 要判断的条件:
条件成立时,要做的事情
……
else:

注意:

  • ​​if​​​ 和​​else​​ 语句以及各自的缩进部分共同是一个完整的代码块

逻辑运算

  • 在程序开发中,通常在判断条件时,会需要同时判断多个条件
  • 只有多个条件都满足,才能够执行后续代码,这个时候需要使用到逻辑运算符
  • 逻辑运算符可以把多个条件按照逻辑进行连接,变成更复杂的条件
  • Python 中的逻辑运算符包括:与 and/或 or/非 not三种

and

条件1 and 条件2
  • 与/并且
  • 两个条件同时满足,返回​​True​​
  • 只要有一个不满足,就返回​​False​​

条件 1

条件 2

结果

成立

成立

成立

成立

不成立

不成立

不成立

成立

不成立

不成立

不成立

不成立

or

条件1 or 条件2
  • 或/或者
  • 两个条件只要有一个满足,返回​​True​​
  • 两个条件都不满足,返回​​False​​

条件 1

条件 2

结果

成立

成立

成立

成立

不成立

成立

不成立

成立

成立

不成立

不成立

不成立

not

not 条件
  • 非/不是

条件

结果

成立

不成立

不成立

成立

if 语句进阶

elif

  • 在开发中,使用​​if​​ 可以判断条件
  • 使用​​else​​ 可以处理条件不成立的情况
  • 但是,如果希望再增加一些条件,条件不同,需要执行的代码也不同时,就可以使用​​elif​​
  • 语法格式如下:
if 条件1:
条件1满足执行的代码
……
elif 条件2:
条件2满足时,执行的代码
……
elif 条件3:
条件3满足时,执行的代码
……
else:
  • 对比逻辑运算符的代码
if 条件1 and 条件2:
条件1满足 并且 条件2满足 执行的代码
……

注意

  • ​​elif​​​ 和​​else​​​ 都必须和​​if​​ 联合使用,而不能单独使用
  • 可以将​​if​​​、​​elif​​​ 和​​else​​ 以及各自缩进的代码,看成一个完整的代码块
  • if 的嵌套

    elif 的应用场景是:同时 判断 多个条件,所有的条件是 平级 的

    • 在开发中,使用​​if​​ 进行条件判断,如果希望在条件成立的执行语句中再增加条件判断,就可以使用if 的嵌套
    • if 的嵌套的应用场景就是:在之前条件满足的前提下,再增加额外的判断
    • if 的嵌套的语法格式,除了缩进之外和之前的没有区别
    • 语法格式如下:
    if 条件 1:
    条件 1 满足执行的代码
    ……

    if 条件 1 基础上的条件 2:
    条件 2 满足时,执行的代码
    ……

    # 条件 2 不满足的处理
    else:
    条件 2 不满足时,执行的代码

    # 条件 1 不满足的处理
    else:
    条件1

    循环结构

    while循环

    while 循环基本使用

    • 循环的作用就是让指定的代码 重复的执行
    • ​​while​​ 循环最常用的应用场景就是 让执行的代码 按照 指定的次数 重复 执行
    • 需求 —— 打印 5 遍​​Hello Python​​
    • 思考 —— 如果要求打印 100 遍怎么办?

    while 语句基本语法

    初始条件设置 —— 通常是重复执行的 计数器

    while 条件(判断 计数器 是否达到 目标次数):
    条件满足时,做的事情1
    条件满足时,做的事情2
    条件满足时,做的事情3
    ...(省略)...

    处理条件(计数器 + 1)

    注意:

    • ​​while​​ 语句以及缩进部分是一个完整的代码块

    注意:循环结束后,之前定义的计数器条件的数值是依旧存在的

    死循环

    由于程序员的原因,忘记 在循环内部 修改循环的判断条件,导致循环持续执行,程序无法终止!

    Python 中的计数方法

    常见的计数方法有两种,可以分别称为:

    • 自然计数法(从​​1​​ 开始)—— 更符合人类的习惯
    • 程序计数法(从​​0​​ 开始)—— 几乎所有的程序语言都选择从 0 开始计数

    因此,大家在编写程序时,应该尽量养成习惯:除非需求的特殊要求,否则 循环 的计数都从 0 开始

    循环计算

    在程序开发中,通常会遇到 利用循环 重复计算 的需求

    遇到这种需求,可以:

  • 在​​while​​ 上方定义一个变量,用于存放最终计算结果
  • 在循环体内部,每次循环都用最新的计算结果,更新之前定义的变量
  • 需求

    • 计算 0 ~ 100 之间所有数字的累计求和结果
    # 计算 0 ~ 100 之间所有数字的累计求和结果
    # 0. 定义最终结果的变量
    result = 0

    # 1. 定义一个整数的变量记录循环的次数
    i = 0

    # 2. 开始循环
    while i <= 100:
    print(i)

    # 每一次循环,都让 result 这个变量和 i 这个计数器相加
    result += i

    # 处理计数器
    i += 1

    print("0~100之间的数字求和结果 = %d" % result)

    需求进阶

    • 计算 0 ~ 100 之间 所有偶数的累计求和结果

    开发步骤

  • 编写循环确认要计算的数字
  • 添加结果变量,在循环内部处理计算结果
  • # 0. 最终结果
    result = 0

    # 1. 计数器
    i = 0

    # 2. 开始循环
    while i <= 100:

    # 判断偶数
    if i % 2 == 0:
    print(i)
    result += i

    # 处理计数器
    i += 1

    print("0~100之间偶数求和结果 = %d" % result)

    break 和 continue

    ​​break​​​ 和 ​​continue​​ 是专门在循环中使用的关键字

    • ​​break​​某一条件满足时,退出循环,不再执行后续重复的代码
    • ​​continue​​某一条件满足时,不执行后续重复的代码

    ​​break​​​ 和 ​​continue​​ 只针对 当前所在循环 有效

    Python基础 -- 流程控制_开发语言_04

    break

    • 在循环过程中,如果某一个条件满足后,不再希望循环继续执行,可以使用​​break​​ 退出循环
    i = 0

    while i < 10:

    # break 某一条件满足时,退出循环,不再执行后续重复的代码
    # i == 3
    if i == 3:
    break

    print(i)

    i += 1

    print("over")

    ​​break​​ 只针对当前所在循环有效

    continue

    • 在循环过程中,如果某一个条件满足后,不希望执行循环代码,但是又不希望退出循环,可以使用​​continue​​
    • 也就是:在整个循环中,只有某些条件,不需要执行循环代码,而其他条件都需要执行
    i = 0

    while i < 10:

    # 当 i == 7 时,不希望执行需要重复执行的代码
    if i == 7:
    # 在使用 continue 之前,同样应该修改计数器
    # 否则会出现死循环
    i += 1

    continue

    # 重复执行的代码
    print(i)

    i += 1
    • 需要注意:使用​​continue​​ 时,条件处理部分的代码,需要特别注意,不小心会出现死循环

    ​​continue​​ 只针对当前所在循环有效

    while 循环嵌套

    • ​​while​​​ 嵌套就是:​​while​​​ 里面还有​​while​​
    while 条件 1:
    条件满足时,做的事情1
    条件满足时,做的事情2
    条件满足时,做的事情3
    ...(省略)...

    while 条件 2:
    条件满足时,做的事情1
    条件满足时,做的事情2
    条件满足时,做的事情3
    ...(省略)...

    处理条件 2

    处理条件 1

    字符串中的转义字符

    • ​​\t​​ 在控制台输出一个制表符,协助在输出文本时垂直方向保持对齐
    • ​​\n​​ 在控制台输出一个换行符

    制表符 的功能是在不使用表格的情况下在 垂直方向 按列对齐文本

    转义字符

    描述

    \\

    反斜杠符号

    \’

    单引号

    \"

    双引号

    \n

    换行

    \t

    横向制表符

    \r

    回车

    for循环

    for语句基本语法

    除了 while 循环,Python 中还有一种常用的循环结构——for 循环

    Python基础 -- 流程控制_python_05


    Python 中的 for 循环是通过 for … in … 语句实现循环的,强调的是对什么 序列 做重复操作。计算机一遇到 for,便会 ​​依次​​ 访问序列中的元素,赋值给变量 i,执行一次循环体。当序列中的元素都访问完一遍,循环自然而然也就停止啦。而这种沿着某条路线,依次对序列中每个元素均做 一次 访问的过程,就叫做 ​​遍历​​。

    for 循环的执行过程:

    Python基础 -- 流程控制_开发语言_06


    图上的代码实际上就是在遍历列表 [0, 1, 2]。每次访问时,Python 把访问到的数字赋值给变量 i,执行 print(i + 1) 语句。所以整段代码的作用就是逐行打印出 1、2、3。

    for 后面的变量是可以自由取名的。遍历一些纯数字序列时,我们常常取名为 i。不过更多情况下,我们应该尽量取一个易于阅读、有含义的变量名。

    序列

    在 Python 中,​​序列​​​ 指的是 ​​有序​​ 元素的集合。我们能使用 len() 函数获取它的长度,也能够用 索引 获取指定位置的元素。
    ​​​列表​​​ 和 ​​元组​​​,还有最开始接触的 ​​字符串​​​,都是 Python 中很常用的序列(range()函数返回的也是一个序列)。而 ​​整数​​​、​​浮点数​​​ 和 ​​布尔值​​,它们都是一个个孤立的存在,自然也就不是序列了。

    元组与字符串

    遍历元组和遍历列表很相似,Python 会从元组第一个元素开始,依次访问到最后一个元素。
    遍历 字符串 时,Python 则会从左往右依次访问字符串里的字符。

    range()

    range函数的用法:

    Python基础 -- 流程控制_后端_07


    range() 函数生成的是一串数字序列,可以使用 list() 函数,把它的返回值转换成列表再使用。其实,range() 函数的返回值可以直接索引,也能通过 len() 函数获取长度,是不折不扣的 序列。

    Python3 range() 返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表,具体可查阅 Python3 range() 用法说明。

    能转换成序列的数据

    zip()

    它可以把两个列表打包组合起来,这个函数返回一个zip对象,你直接打印是打印不出来的
    例如:

    ids = [1, 2, 3]
    names = ['派大星', '章鱼哥', '珊迪']
    name_with_id = list(zip(ids, names))
    print(name_with_id)
    # 输出:[(1, '派大星'), (2, '章鱼哥'), (3, '珊迪')]

    打包后的结果 names_with_ids 实际上按顺序保存一个个形如 (编号, 名字) 的 元组。
    zip的对象在遍历的时候是不用转化为list的,它自身就是序列可以遍历。

    这种元组结构想要访问到里面的数据:

    info = (1, '派大星')
    id, name = info
    print(id)
    # 输出:1
    print(name)
    # 输出:派大星

    这是 Python 中的特殊规则:用逗号 , 分隔开的多个变量,可以 ​​按顺序​​​ 一次性获取 ​​序列​​​ 中的元素。需要注意的是,序列里有几个元素,就要用多少个变量把它们一一取出来(你不能说取一半就不取了)。
    所以对于按编号、名字顺序组合起来的数据 zip(ids, names),我们可以设置 id 和 name 这两个变量去遍历它,就像这样:

    ids = [1, 2, 3]
    names = ['派大星', '章鱼哥', '珊迪']
    # 遍历按编号、名字顺序组合起来的数据
    for id, name in zip(ids, names):
    print(str(id) + '号:' + name)
    '''
    输出:
    1号:派大星
    2号:章鱼哥
    3号:珊迪
    '''

    变量 id 在访问到列表 ids 中各个元素的同时,变量 name 也访问到了 names 中对应位置的元素。

    enumerate()

    enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
    返回的是一个enumerate对象
    例如:

    names = ['派大星', '章鱼哥', '珊迪']
    # 为其标上序号,默认从 0 开始
    names_with_id = list(enumerate(names))
    print(names_with_id)
    # 输出:[(0, '派大星'), (1, '章鱼哥'), (2, '珊迪')]

    可以看到,这些序号默认是从 0 开始的,我们也可以传入参数,指定序号开始数字,让结果更符合我们的习惯。

    # 指定序号从 1 开始
    names_with_id = list(enumerate(names, 1))
    print(names_with_id)
    # 输出:[(1, '派大星'), (2, '章鱼哥'), (3, '珊迪')]

    它的返回值也类似一个个元组,跟zip()函数的返回值一样,所以也可以同zip那样遍历。


    上一篇:Python基础 -- 变量进阶
    下一篇:没有了
    网友评论