Python基础 — 流程控制

目录

程序的三大流程

  • 在程序开发中,有三个过程:

    [En]

    in program development, there are three processes:*

  • 顺序—— 从上向下,顺序执行代码

  • 分支—— 根据条件判断,决定执行代码的 分支
  • 循环—— 让 特定代码 重复执行

Python基础 -- 流程控制

分支结构

程序中的判断

Python基础 -- 流程控制
if 今天发工资:    先还信用卡的钱    if 有剩余:        又可以happy了,O(∩_∩)O哈哈~    else:        噢,no。。。还的等30天else:

判断的定义

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

正是因为有了判断,才使得程序世界丰富多彩,充满变化!
判断语句 又被称为 “分支语句”,正是因为有了判断,才让程序有了很多的分支

if 判断语句基本语法

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

if 要判断的条件:

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

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

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

Python基础 -- 流程控制

else 处理条件不满足的情况

思考

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

答案

​else​​,格式如下:

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

注意

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

逻辑运算

  • 在程序开发中,通常 在判断条件时,会需要同时判断多个条件
  • 只有满足多个条件,才能执行后续代码。在这种情况下,需要逻辑运算符
    [En]

    only if multiple conditions are met can the subsequent code be executed. In this case, the * logical operator * is required.*

  • 逻辑运算符可以把 多个条件按照 逻辑进行 连接,变成 更复杂的条件
  • 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满足 执行的代码    ......

注意

  1. ​elif​​​ 和​ ​else​​​ 都必须和​ ​if​​ 联合使用,而不能单独使用
  2. 可以将​ ​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 中的计数方法

常见的计数方法有两种,可以调用:

[En]

There are two common counting methods, which can be called:

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

因此,在编写程序时,我们应该努力养成除非对要求有特殊要求,循环数从0开始的习惯。

[En]

Therefore, when writing programs, we should try to get into the habit of * unless there are special requirements of the requirements, the count of loops starts at 0 *

循环计算

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

遇到这种需求,可以:

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

需求

  • 计算 0 ~ 100 之间所有数字的累计求和结果
计算 0 ~ 100 之间所有数字的累计求和结果# 0. 定义最终结果的变量result = 0# 1. 定义一个整数的变量记录循环的次数i = 0# 2. 开始循环while i  100:    print(i)    # 每一次循环,都让 result 这个变量和 i 这个计数器相加    result += i    # 处理计数器    i += 1print("0~100之间的数字求和结果 = %d" % result)

需求进阶

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

开发步骤

  1. 编写循环 确认 要计算的数字
  2. 添加 结果变量,在循环内部 处理计算结果
0. 最终结果result = 0# 1. 计数器i = 0# 2. 开始循环while i  100:    # 判断偶数    if i % 2 == 0:        print(i)        result += i    # 处理计数器    i += 1print("0~100之间偶数求和结果 = %d" % result)

break 和 continue

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

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

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

Python基础 -- 流程控制

break

  • 在循环过程中,如果 某一个条件满足后再希望 循环继续执行,可以使用​ ​break​​ 退出循环
i = 0while i < 10:    # break 某一条件满足时,退出循环,不再执行后续重复的代码    # i == 3    if i == 3:        break    print(i)    i += 1print("over")

&#x200B;break&#x200B;​ 只针对当前所在循环有效

continue

  • 在循环过程中,如果 某一个条件满足后希望 执行循环代码,但是又不希望退出循环,可以使用​ &#x200B;continue&#x200B;
  • 也就是:在整个循环中, 只有某些条件,不需要执行循环代码,而其他条件都需要执行
i = 0while i < 10:    # 当 i == 7 时,不希望执行需要重复执行的代码    if i == 7:        # 在使用 continue 之前,同样应该修改计数器        # 否则会出现死循环        i += 1        continue    # 重复执行的代码    print(i)    i += 1
  • 需要注意:使用​ &#x200B;continue&#x200B;​ 时, 条件处理部分的代码,需要特别注意,不小心会出现 *死循环

&#x200B;continue&#x200B;​ 只针对当前所在循环有效

while 循环嵌套

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

字符串中的转义字符

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

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

转义字符

描述

\

反斜杠符号

\’

单引号

\”

双引号

\n

换行

\t

横向制表符

\r

回车

for循环

for语句基本语法

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

Python基础 -- 流程控制

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

for 循环的执行过程:

Python基础 -- 流程控制

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

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

序列

在 Python 中,​ &#x200B;&#x5E8F;&#x5217;&#x200B;​​ 指的是 ​ &#x200B;&#x6709;&#x5E8F;&#x200B;​ 元素的集合。 我们能使用 len() 函数获取它的长度,也能够用 索引 获取指定位置的元素。
​​ &#x200B;&#x5217;&#x8868;&#x200B;​​ 和 ​ &#x200B;&#x5143;&#x7EC4;&#x200B;​​,还有最开始接触的 ​ &#x200B;&#x5B57;&#x7B26;&#x4E32;&#x200B;​​,都是 Python 中很常用的序列(range()函数返回的也是一个序列)。而 ​ &#x200B;&#x6574;&#x6570;&#x200B;​​、​ &#x200B;&#x6D6E;&#x70B9;&#x6570;&#x200B;​​ 和 ​ &#x200B;&#x5E03;&#x5C14;&#x503C;&#x200B;​,它们都是一个个孤立的存在,自然也就不是序列了。

元组与字符串

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

range()

range函数的用法:

Python基础 -- 流程控制

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的,它自身就是序列可以遍历。

这个元组结构想要访问内部的数据:

[En]

This tuple structure wants to access the data inside:

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

这是 Python 中的特殊规则:用逗号 , 分隔开的多个变量,可以 ​ &#x200B;&#x6309;&#x987A;&#x5E8F;&#x200B;​​ 一次性获取 ​ &#x200B;&#x5E8F;&#x5217;&#x200B;​​ 中的元素。需要注意的是,序列里有几个元素,就要用多少个变量把它们一一取出来(你不能说取一半就不取了)。
所以对于按编号、名字顺序组合起来的数据 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开始,或者我们可以传入参数并指定序列号来开始编号,这样结果更符合我们的习惯。

[En]

As you can see, these sequence numbers start from 0 by default, or we can pass in parameters and specify the sequence number to start the number, so that the result is more in line with our habits.

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

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

Original: https://blog.51cto.com/u_15743016/5549288
Author: 十八岁讨厌编程
Title: Python基础 — 流程控制

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/504433/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球