0
点赞
收藏
分享

微信扫一扫

Python基础 -- 流程控制


目录

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

程序的三大流程

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

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

分支结构

程序中的判断

Python基础 -- 流程控制_python_02

if 今天发工资:

先还信用卡的钱

if 有剩余:

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

else:

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

判断的定义

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

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

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

if 判断语句基本语法

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

if 要判断的条件:

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

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

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

Python基础 -- 流程控制_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满足 执行的代码
……

注意

  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 中的计数方法

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

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

因此,大家在编写程序时,应该尽量养成习惯:除非需求的特殊要求,否则 循环 的计数都从 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 += 1

print("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 += 1

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

break 和 continue

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

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

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

Python基础 -- 流程控制_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基础 -- 流程控制_后端_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那样遍历。


举报

相关推荐

0 条评论