1.1什么是流程控制?
流程控制即控制流程,具体指控制程序的执行流程,而程序的执行流程分为三种结构:顺序结构(之前我们写的代码都是顺序结构)、分支结构(判断)、循环结构(while for)
二.分支结构
2.1 什么是分支结构?
分支结构就是根据条件判断的真假去执行不同分支对应的子代码
2.2 为什么要用分支结构?
为了让计算机可以有像人一样的逻辑判断能力去做事
2.3 怎么使用分支结构?
引入if语句
定义:主要是用于判断事物的对错 真假 是否可行
语法结构
#第一种结构if 条件: 代码块#第二种结构if 条件: 代码块1else: 代码块2#第三种结构if 条件1: 代码块1elif 条件2: 代码块2elif 条件3: 代码块3elif 条件n: 代码块nelse: 代码块n+1
案例1:
如果今天下雨,那么就带伞
weather = '不下雨'if weather == '下雨': print('出门记得带伞')
案例2:
如果今天下雨,那么就带伞;反之则不带
weather = '不下雨'if weather == '下雨': print('出门记得带伞')else: print('不用带伞')
案例3:
如果:成绩>=90,那么:优秀
如果成绩>=80且<90,那么:良好
如果成绩>=70且<80,那么:普通
其他情况:不合格
score = input('请输入您的成绩:')score = int(score) #因为input不管你输入的是什么样的数据类型最终都会转为字符串(str),并且我#们下面的成绩要和数字做对比,所以这里必须要把字符串转化为整型if score >= 90: print('优秀')elif score >= 80: print('良好')elif score >= 70: print('普通')else: print('不合格')
案例4:
女人的年龄>=18并且<22岁并且身高>160并且体重<100并且是漂亮的,那么:表白,否则:叫阿姨在表白的基础上继续:如果表白成功,那么:在一起 否则:打印
gender = 'female'age = 19height = 161weight = 99is_beautiful = Trueis_success = 1if gender == 'female' and age >= 18 and age < 22 and height > 160 and weight < 100 and is_beautiful: print('表白') if is_success: print('Congratulations, please stay together') else: print('Oh,my Gad.I am not live')else: print('叫阿姨')
PS:
1、python用相同缩进(4个空格表示一个缩进)来标识一组代码块,同一组代码会自上而下依次运行
2、条件可以是任意表达式,但执行结果必须为布尔类型
3、在if判断中所有的数据类型也都会自动转换成布尔类型
4、None,0,空(空字符串,空列表,空字典等)三种情况下转换成的布尔值为False
5、其余均为True
三 循环结构
3.1 什么是循环结构
循环结构就是重复执行某段代码块
3.2 为什么要用循环结构
人类某些时候需要重复做某件事情
所以程序中必须有相应的机制来控制计算机具备人的这种循环做事的能力
3.3 怎么使用循环结构
while 条件: 代码1 代码2 代码3 ......# while的运行步骤:# 步骤1:如果条件为真,那么依次执行:代码1、代码2、代码3、......# 步骤2:执行完毕后再次判断条件,如果条件为True则再次执行:代码1、代码2、代码3、......,如果条件为False,则循环终止
案例1
用户登陆认证,认证成功则登陆成功,认证失败则打印登陆失败,最多可认证三次
#在不能使用循环的情况下,我们要重复三次同样的语句name = input('请输入您的用户名:')password = input('请输入您的密码:')password = int(password) #因为input将最后输入的内容转化为了字符串,这里不进行转化的话,可以#在下一行代码password == 123 换为 password == '123'if name == 'bing' and password == 123: #进行条件判断 print('登陆成功')else: print('登陆失败')
当因为while循环后,我们就可以这样写
count = 0 #记录登陆失败次数 while count < 3: name = input('请输入您的用户名:') password = input('请输入您的密码:') if name == 'bing' and password == '123': #进行条件判断 print('登陆成功') else: print('登陆失败') count += 1
但是在这里我们会发现一个问题:即使是登陆成功了,循环依然会进行三次,这样显然是不符合我们平常的使用习惯的。那么如何在登陆成功后就结束这个循环呢?下面我们就用到了break
案例2
where + break的使用
count = 0 while count < 3: name = input('请输入您的用户名:') password = input('请输入您的密码:') if name == 'bing' and password == '123': #进行条件判断 print('登陆成功') break #结束本层循环,单纯指代当前while else: print('登陆失败') count += 1
案例3
while循环嵌套+break
count = 0 while count < 3: name = input('请输入您的用户名:') password = input('请输入您的密码:') if name == 'bing' and password == '123': print('登陆成功') while True: cmd = input('>>>:') if cmd == 'quit': break else: print('haha') break else: print('登陆失败') count += 1
案例四
针对嵌套多层的while循环,如果我们的目的很明确就是要在某一层直接退出所有层的循环,其实有一个窍门,就让所有while循环的条件都用同一个变量,该变量的初始值为True,一旦在某一层将该变量的值改成False,则所有层的循环都结束
count = 0 tag = True while count < 3: name = input('请输入您的用户名:') password = input('请输入您的密码:') if name == 'bing' and password == '123': print('登陆成功') while tag: cmd = input('>>>:') if cmd == 'quit': tag = False #break #此时该break已经没有意义了 else: print('haha') break #如果这里我们不要break也想达到所有循环都结束的目的,可以将第一个while换为tag else: print('登陆失败') count += 1
案例5
while+continue
continue:跳过本次循环,执行下一次循环(continue下面不管有多少行代码,都不会执行)
打印1到10之间,除了7的数字
count = 0 while count < 10: count += 1 if count == 7: continue else: print(count)
案例6
while+else的使用
在while循环的后面,我们可以跟else语句,当while 循环正常执行完并且中间没有被break 中止的话,就会执行else后面的语句,所以我们可以用else来验证,循环是否正常结束
count = 0 while count < 5: count += 1 print(f'第{count}次') else: print('结束')
for循环
循环结构的第二种实现方式是for循环,for循环可以做的事情while循环都可以实现,之所以用for循环是因为在循环取值给我们提供了一种不依赖于索引的取值
语法结构
for 变量 in 容器对象
容器对象有几个值就循环几次
for 变量名 in 可迭代对象: # 此时只需知道可迭代对象可以是字符串\列表\字典,我们之后会专门讲解可迭代对象 代码一 代码二 ... #例1 for item in ['a','b','c']: print(item) # 运行结果 a b c # 参照例1来介绍for循环的运行步骤 # 步骤1:从列表['a','b','c']中读出第一个值赋值给item(item=‘a’),然后执行循环体代码 # 步骤2:从列表['a','b','c']中读出第二个值赋值给item(item=‘b’),然后执行循环体代码 # 步骤3: 重复以上过程直到列表中的值读尽
案例1
打印数字0-5
for i in range(6): print(i) count = 0 while count < 6: print(count) count += 1
案例2
for i in {'name': 'bing', 'age': 21, 'gender': 'male'}: print(i)
PS:字典对象,无法直接访问值(value)
案例3
for循环嵌套
#请用for循环嵌套的方式打印如下图形: ***** ***** ***** for a in range(3): for b in range(5): print('*', end='') print()
PS:break 与 continue也可以用于for循环,使用语法同while循环