流程控制[if...else...(if...elif...else...),while,for]
流程控制
过程管理(亦称程序控制)是计算系统领域的术语,在执行过程中对个别指令(包括陈述、子程序运行及求值)的操作顺序进行安排和调控。
在程序开发中,一共有三种流程方式:
- 执行顺序——按照从上到下的方式执行代码
- 分支——基于条件判断来决定执行相应的分支
- 循环——使特定代码反复运行

不管是多么复杂的程序,都是由这些很多简单的流程控制构建起来的。
if 判断语句
从语法结构来看,if语句是最简单的一种选择结构。一旦条件得到满足,则会执行预先设定的操作;否则将执行其他相关操作。
判断的定义
- 只有当条件达到要求时,才允许进行某项操作。
- 否则,则可以选择执行另一项任务或什么都不做。
判断语句又被称为 “分支语句”
if 判断

语法
冒号与缩进属于编程语法中的基本概念。在一个Tab键通常等于四个空格的情况下,在if条件语句被满足时,在其后面的英文标点符号(冒号)后直接按Enter键会自动执行相应的缩进操作,并无需手动进行任何调整。这样的设计非常直观且易于上手。
2:赋值满足条件,则print执行下一步
3:当赋值结果不符合预期条件时,则会跳过当前处理;如果仅有一条数据,则输出的内容为空;如果有两条数据,则会忽略第一条记录并执行第二步操作, 即执行else步骤。
带有条件判断的分支结构,在满足条件时会执行相应的指令块;如果不满足则会进入 else 块并执行其中的指令
if 要判断的条件:
条件成立时,要做的事情
……
else:
条件不成立时,要做的事情
……
注意 :
if和else语句以及各自的缩进部分共同是一个 完整的代码块
"""
经过一个红绿灯,如果是红灯就立马停车,如果是绿灯就继续前行
"""
light = "红灯"
## if 语句以及缩进部分的代码也是一个完整的代码块0
if light == "红灯":
print("立马停车")
## else 语句以及缩进部分的代码是一个完整的代码块
else:
print("继续前行")

if 多条件判断

- 在编程过程中,默认情况下程序会遵循默认逻辑。
- 当某个预设条件无法满足时,默认情况下程序会执行特定操作。
- 不过,在需要实现更加复杂的控制流程时,默认情况下程序通常会按照既定流程运行。
- 因此,默认情况下程序通常会按照既定流程运行。
- 语法格式如下:
python
if 条件: 执行代码1 elif 条件2: 执行代码2 else: 执行代码3
if 条件1:
条件1满足执行的代码
……
elif 条件2:
条件2满足时,执行的代码
……
elif 条件3:
条件3满足时,执行的代码
……
else:
以上条件都不满足时,执行的代码
……
light = "红灯"
if light == "红灯":
print("立马停车")
elif light == "黄灯":
print("立马停车")
else:
print("继续前行")
注意
在编程逻辑中, 我们可以将 elif 和 else 都必须与 if 联合使用这一规定, 视为默认约束条件
elif 的应用场景是:同时 判断 多个条件 ,所有的条件是 平级 的
if 的嵌套
在开发过程中,应用 if 语句来进行条件判断。如果希望,在已经满足某个条件下运行的代码块中再加入新的条件判断,则可以采用 if 结构进行嵌套设计。
if 的嵌套 的应用场景就是:在之前条件满足的前提下,再增加额外的判断
if 的嵌套 的语法格式,除了缩进之外 和之前的没有区别
语法格式如下:
if 条件 1:
条件 1 满足执行的代码
……
if 条件 1 基础上的条件 2:
条件 2 满足时,执行的代码
……
# 条件 2 不满足的处理
else:
条件 2 不满足时,执行的代码
## 条件 1 不满足的处理
else:
条件1 不满足时,执行的代码
……
"""
微博信息采集与推送流程
注册账号后先采集姓名,然后再采集用户的兴趣,最后给用户推送可能感兴趣的内容
"""
sex = int(input("请输入你的性别:"))
if sex == "男":
print("给你推荐男生可能喜欢的话题")
hobby = int(input("请输入你的兴趣:"))
# 推荐男频小说的类别
if hobby == '小说':
print('给你推荐小说相关的话题')
elif hobby == '科技':
print('给你推荐科技相关的话题')
else:
print('给你推荐大部分男生喜欢的内容')
elif sex == "女":
print("给你推荐女生可能喜欢的话题")
elif sex == "保密":
print('随便推送内容')
else:
print("其他情况")
总结
if 的三种形式
1、if
if 条件1:
条件1满足执行的代码
不满足条件时没有任何提示
2、if … else
if 条件1:
条件1满足执行的代码
else:
以上条件都不满足时,执行的代码
……
2、if … elif … elif … else
多条件选择使用
if 条件1:
条件1满足执行的代码
……
elif 条件2:
条件2满足时,执行的代码
……
elif 条件3:
条件3满足时,执行的代码
……
else:
以上条件都不满足时,执行的代码
……
4、if嵌套
if 条件1:
if 条件 1 基础上的条件 2:
条件 2 满足时,执行的代码
……
# 条件 2 不满足的处理
else:
条件 2 不满足时,执行的代码
else:
以上条件都不满足时,执行的代码
……
练习:比较两个数字大小,并按顺序输出
使用 input 输入两个数,根据其大小先后输出
- 输入两个数
- 判断大小
- 输出大的数字
a = input("请输入a:")
b = input("请输入b:")
max_number = 0
if a > b:
max_number = a
else:
max_number = b
print(max_number)
while 循环
while是一种在程序设计中被广泛采用的基本控制结构之一。一旦条件被检测到满足就会触发该语句的执行过程;一旦条件不被满足则会终止该语句的相关操作流程。其语法结构通常表示为:while(判断条件){...}的形式。
循环的作用就是让 指定的代码 重复的执行
while 循环最主要的使用场景就是能够让执行的代码遵循指定的次数反复进行
基本语法

案例:重复执行五次
需求 —— 打印 5 遍 我喜欢 Python
思考 —— 如果要求打印 100 遍怎么办?
注意:
while语句以及缩进部分是一个 完整的代码块
## while 循环
i = 0 # 限制条件
while i < 5: # 循环申明 判断条件
print('我喜欢 Python !') # 程序执行的内容
i += 1 # 限制条件
死循环
因为程序员的缘故,在循环内部未对循环的判断条件进行更新,进而使程序陷入无限循环而无法终止。
循环计算
打印小星星
在控制台连续输出五行 *,每一行星号的数量依次递增
* ** *** **** *****
使用字符串 * 打印
# 1. 定义一个计数器变量,从数字1开始,循环会比较方便
row = 1
while row <= 5:
print("*" * row)
row += 1
循环打印小星星
假设 Python 没有提供 字符串的 * 操作 拼接字符串
在控制台连续输出五行 *,每一行星号的数量依次递增
* ** *** **** *****
开发步骤
- 完成 5 行内容的简单输出
- 分析每行内部的
*应该如何处理?
每行显示的星星和当前所在的行数是一致的
嵌套一个小的循环,专门处理每一行中 列 的星星显示
row = 1
while row <= 5:
# 假设 python 没有提供字符串 * 操作
# 在循环内部,再增加一个循环,实现每一行的 星星 打印
col = 1
while col <= row:
print("*", end="")
col += 1
# 每一行星号输出完成后,再增加一个换行
print("")
row += 1
九九乘法表
需求 输出 九九乘法表,格式如下:
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
开发步骤
- 打印 9 行小星星
* ** *** **** ***** ****** ******* ******** *********
- 将每一个
*替换成对应的行与列相乘
# 定义起始行
row = 1
# 最大打印 9 行
while row <= 9:
# 定义起始列
col = 1
# 最大打印 row 列
while col <= row:
# end = "",表示输出结束后,不换行
# "\t" 可以在控制台输出一个制表符,协助在输出文本时对齐
print("%d * %d = %d" % (col, row, row * col), end="\t")
# 列数 + 1
col += 1
# 一行打印完成的换行
print("")
# 行数 + 1
row += 1
for 遍历
for 语句
在计算机科学领域中存在一种常见的操作:它指的是遵循特定的访问顺序进行系统地访问每一个元素而不遗漏,并且不会重复访问同一个元素的过程。

语法
for item in 'hello world !':
print(item)
for i in range(10)
In [15]: for i in range(10):
...: print(i)
...:
0
1
2
...
range
range() 函数可创建一个整数列表,一般用在 for 循环中。
函数语法:
range(start, stop[, step])
参数说明:
- start: 开始于 start,默认起始值为零。
- stop: 结束于 stop 不包括该值;在Python中使用 range(5) 等效于 range(0,5)
- step: 步长设置为一,默认情况下
In [18]: list(range(10))
Out[18]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [21]: tuple(range(10))
Out[21]: (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
for遍历可迭代对象
for可以迭代所有可迭代对象(字符串、列表、元组、集合、字典)
for num in list(range(1000)):
print(num)
案例:用 for 迭代获取所有水仙花数
for num in range(1000):
print(num)
案例:用for循环实现九九乘法表
for row in range(1, 10):
for col in range(1, row + 1):
print("%d * %d = %d" % (col, row, row * col), end="\t")
print()
break 和 continue
break和continue是专门在循环中使用的关键字
break 某一条件满足时 ,退出循环,不再执行后续重复的代码
continue 某一条件满足时 ,不执行后续重复的代码
break 和 continue 只针对 当前所在循环 有效
break
从程序内部触发时中断当前正在执行的循环,在程序处于执行循环体阶段时(即完成了一次完整的迭代),当某个特定条件被检测到满足时(即该条件的结果为真),不需要继续执行下去(即停止再次进入循环体),可以通过调用break语句来终止当前的迭代过程
案例:登录账号
循环一直输入账号密码,输入成功之后跳出循环
while True:
password = input("请输入密码")
if password == '123456':
# 当满足条件时 中断循环
print('密码输入正确,跳出循环')
break
# 重复执行的代码
print("输入的密码错误,请重新输入")
continue
中断本次循环的后面部分
当处理循环时,在某个条件触发时(即满足时),既避免执行循环体内容又不终止整个循环过程的情况可以通过插入continue关键字来实现。
即在循环体中只有特定条件下会跳过对循环代码的执行其余情况下则必须进入循环体进行处理
while True:
password = input("请输入密码")
if password == '123456':
# 当满足条件时 终止后续的操作
print('密码输入正确,终止后续的操作')
continue
print("输入的密码错误,请重新输入")
在使用 continue 的时候必须注意,在条件处理部分的代码必须特别小心处理 ,否则可能会导致死锁 ,出现死循环的情况
continue只针对当前所在循环有效
else 语句(了解)
在while和for循环中可以应用else结构,在这种情况下将else与while或for配合使用不再仅仅表示条件判断,并且会形成一个新的语法构造。当程序正常退出时会执行该语句;如果出现异常退出则不会执行该语句。
else与while一起使用
而是当while条件不成立时,直接跳出while循环,执行else输出如:
i = 1
while i < 5:
i += 1
else:
print('正常结束')
else与for一起使用
for i in range(5):
pass
else:
print('正常结束')
拓展
三元表达式
程序设计中,往往有一些巧妙的程序语言,能够使得程序看起来简练干净:
num1 = int(input('请输入第一个数:'))
num2 = int(input('请输入第二个数:'))
# if else 获取做大的那个数
if num1 >= num2:
num_max = num1
else:
num_max = num2
print(num_max)
# 三元表达式 if ... else 的简写
# 结果1 if 条件 else 结果2
# 满足条件返回左边的结果1, 不满足条件返回右边的结果2
num_max = num1 if num1 >= num2 else num2
print(num_max)
