今日内容概要
- 流程控制理论(重要)
- 分支结构之——if判断
- 循环结构之——while循环
- 今日补充
- 课堂小练习
今日内容详细
一、流程控制理论(重要)
1、什么是流程控制?
- 定义:流程控制即控制流程,具体指控制程序的执行流程
2、执行流程的分类?
程序的执行流程分为三种结构:顺序结构(之前我们写的代码都是顺序结构)、分支结构(用到if判断)、循环结构(用到while与for)
下面我来详细讲述一下这三种流程结构:
1)顺序结构
-
定义: 从上往下依次执行(按部就班一步一步来)
-
流程图如下:
2)分支结构
-
定义:分支结构就是根据条件判断的真假去执行不同分支对应的子代码
-
流程图如下:
- 为什么要用分支结构?
人类某些时候需要根据条件来决定做什么事情,比如:如果今天下雨,就带伞
所以程序中必须有相应的机制来控制计算机具备人的这种判断能力
3)循环结构
-
定义:根据某些条件的判断循环反复的做相同的事情(也就是重复执行某段代码块)
-
流程图如下:
-
为什么要用循环结构?
人类某些时候需要重复做某件事情
所以程序中必须有相应的机制来控制计算机具备人的这种循环做事的能力
二、分支结构之——if判断
- 在 Python 中,可以使用 if else 语句对条件进行判断,然后根据不同的结果执行不同的代码,这称为选择结构或者分支结构。Python 中的 if else 语句可以细分为三种形式,分别是 if 语句、if else 语句和 if elif else 语句。if、elif 和 else 后面的代码块一定要缩进,而且缩进量要大于 if、elif 和 else 本身。 if、else 语句是对齐的,在同一条竖线上,都没有缩进。这 3 种条件语句之间可以相互嵌套。
注:
- 条件可以是任意表达式,但执行结果必须为布尔类型
- 在if判断中所有的数据类型也都会自动转换成布尔类型
2.1. None,0,空(空字符串,空列表,空字典等)三种情况下转换成的布尔值为False
2.2. 其余均为True - if 条件之后必须要有冒号才算if判断语句
- 在 python 中,用缩进来表示从属关系,为了美观,python用相同缩进(4个空格表示一个缩进)来标识一组代码块,同一组代码会自上而下依次运行,也可用Tab键一键缩进
- 当一行代码由 : 为结尾时,那么它的下一行必须缩进,冒号的含义就是要拥有子代码。
- 如果多行代码属于同一个父代码,那么他们的缩进也要相同
1、单 if 分支
"""
语法结构
if 条件:
条件成立之后执行的子代码(可以有多行)
"""
就好比如定义一个人的年龄,判断这个人的年龄是否大于小于一个数值,就是条件是否成立,如果成立,则直接打印出结果,否则打印结果为空
2、if 与 else 分支
"""
语法结构
if 条件:
条件成立之后执行的子代码(可以有多行)
else:
条件不成立执行的子代码(可以有多行)
"""
就好比判断一个条件的值是否成立,如果成立,则直接执行if条件下的"代码块",如果不成立,则执行else后面的"代码块"。
注:
- 在使用else 语句时,else一定不可以单独使用,它必须和保留字if一起搭配使用。
3、if 与 elif 与 else 分支
"""
语法结构
if 条件1:
条件1成立执行的子代码(可以有多行)
elif 条件2:
条件1不成立条件2成立执行的子代码(可以有多行)
elif 条件3:
条件1和2都不成立 条件3成立执行的子代码(可以有多行)
else:
上述所有的条件都不成立执行的子代码(可以有多行)
中间的elif可以有多个
"""
就好比先判断 if 条件1后的值是否成立,若为真,则执行if条件1成立的子代码,如果值为假,则跳过该执行语句,进行到下一个elif判断,重复以上的步骤,只有表达式全部为假的情况下,才能执行else后面的代码。
注:
- if 和 elif 都需要判断表达式的真假,而 else 则不需要判断;另外 elif 和 elif 都需要跟 if 一起使用,不能单独使用。
4、if 的嵌套
前面已经介绍了3种形式的 if 语句,这三种都可以进行相互嵌套:
(1)在最简单的if语句中嵌套 if……else语句,形式如下:
age = 22
is_success = True
if age < 38:
print('我观察你很久了 想了想还是勇气给你要个联系方式')
if is_success:
print('吃饭 看电影 天黑了 睡觉觉')
else:
print('去你妹的')
else:
print('哎呀不好意思 认错人了')
(2)在if……else中嵌套if……else语句,形式如下:
if 表达式1:
if 表达式2:
语句块1
else:
语句块2
else:
if 表达式3:
语句块3
else:
语句块4
注:
if 选择语句可以有多种嵌套方式,但一定要严格控制好不同级别代码的缩进量和从属关系
分支结构练习
1.编写一个用户登录程序
如果用户名是jason并且密码是123 则打印登录成功
如果不是则打印用户名或密码错误
2.编写一个成绩评判系统
如果成绩大于90 则打印优秀
如果成绩大于80 则打印良好
如果成绩大于70 则打印一般
如果成绩大于60 则打印及格
如果成绩小于60 则打印挂科
三、 循环结构之——while循环
- while循环是通过一个条件来控制是否要继续反复执行循环体(循环体是指一组被重复执行的语句)中的语句。
- 注:在使用while循环语句时,一定不要忘记添加将循环条件改变为Flase的代码,否则,将产生死循环。但开发中也离不开死循环,可根据情况进行编写。
1、while循环的基本使用
"""
语法结构
while 条件:
条件成立之后执行的循环体代码
1.先判断条件是否成立 如果成立则执行循环体代码
2.循环体代码执行完毕后 再次判断条件是否成立 如果成立则继续执行循环体代码 如果不成立则跳出循环
"""
执行 Gif 演示:
2、while + break的使用
使用了while循环后,代码确实精简多了,但问题是用户输入正确的用户名密码以后无法结束循环,那如何结束掉一个循环呢?这就需要用到break了!
break的英文单词的意思是打破,打碎,折断的意思,但在python中,break是用于直接结束本层循环,break只能结束所在的那一层循环,break 语句一般会结合 if 语句进行搭配使用,表示在某种条件下跳出循环体。
例如我们常用的一些登录系统:
username = "jason"
password = "123"
count = 0
while count < 3: # 第一层循环
inp_name = input("请输入用户名:")
inp_pwd = input("请输入密码:")
if inp_name == username and inp_pwd == password:
print("登陆成功")
while True: # 第二层循环
cmd = input('>>: ')
if cmd == 'quit':
break # 用于结束本层循环,即第二层循环
print('run <%s>' % cmd)
break # 用于结束本层循环,即第一层循环
else:
print("输入的用户名或密码错误!")
count += 1
如果while循环嵌套了很多层,要想退出每一层循环则需要在每一层循环都有一个break
while + continue的使用
break代表结束本层循环,而continue则用于结束本次循环,直接进入下一次循环
四、今日补充
1、并不是所有的代码都可以有子代码(从属的代码)
-
目前可以有的:if 、else
-
如果一行代码的结尾是冒号结束 那么紧挨着的下一行必缩进
-
冒号的含义相当于是要拥有子代码
2、debug模式的使用
- 可以将瞬间执行完成的代码变成分步执行,方便我们程序员进行软件的测试,以及出现bug时的分析解决
五、课堂小练习
1、编写一个猜年龄的游戏
基本要求
如果不对的情况下可以猜三次 如果对了直接结束
拔高练习
三次机会用完之后提示用户是否继续猜测 如果用户输入了y
则再给用户三次机会 如果用户输入n则直接结束