分支结构与循环结构
I.流程控制理论
-
流程控制:控制事物的执行流程
-
执行流程的分类:主要分三类,分别为顺序结构、分支结构、循环结构(可用processon.com制作流程图)
1. 顺序结构 从上往下依次执行,此前播客所编写的代码均为顺序结构 2. # 分支结构 根据某些条件的'判断',做出不同的执行流程,类似于条件框(yes/no) 3. # 循环结构 根据某些条件的判断循环往复地进行某一个流程(存在循环结束的条件) '在代码层面上为反复执行同一串代码'
II.分支结构
一.单if分支
-
定义:为条件成立时执行的代码,eg:
如果女性的年龄大于14,则定义为妇女
# 定义一个年龄 age = 30 # 判断年龄是否大于14 if age > 14: print('妇女') print('哪都有') # 当年龄>14时,输出'妇女'及'哪都有';当年龄≤14时则仅输出'哪都有' ''' 在python中以缩进来代表代码的从属关系,如以上代码中print前的缩进,代表print指令需满足if条件 ''' 并不是所有的代码都有子代码(从属代码),如在以上例子中,print代码为if的子代码,目前只有if相关结构具有子代码,且所有子代码均需保证相同的缩进'一般以4个空格缩进(按Tab默认空4格)' eg: age = 30 if age > 14: print('妇女') print('半边天') print('3.8过节')
-
如果一行代码的结尾以’:'结束,代表该段代码需拥有子代码,下一行代码必会缩进
-
具有相同缩进量的代码会按顺序执行
二.if与else分支
-
定义:为条件成立或不成立时分别执行的不同子代码,
如果女性的年龄大于14,则定义为妇女,否则定义为少女
# 定义一个年龄 age = 30 # 判断年龄是否大于14 if age > 14: print('妇女') else: print('少女') print('%s岁的女子最好看' % (age))
-
分支内可继续分支,分支行也可以汇合后再次分支
三.if与elif与else分支
-
定义:为不同条件(>3个)时分别执行的不同子代码,
如果女性的年龄小于7,则定义为幼女,7-14岁为少女,否则定义为妇女
# 定义一个年龄 age = 30 # 判断年龄是否大于14 if age < 7: print('幼女') elif 7<= age < 14: print('少女') else : print('妇女') print('%s岁的女子最好看' % (age))
-
elif可多次出现,即:将if-else的二选一修改为多选一,即单个条件框存在多个分支
四.if的嵌套结构
-
定义:为多个顺序条件执行的子代码,
如果女性的年龄小于7,则定义为幼女,7-14岁为少女,否则定义为妇女,根据意愿给予幼女软糖,给予少女布娃娃,给予妇女手机,否则离开
# 定义一个年龄 age = 30 is_hope = 1 # 判断年龄是否大于14 if age < 7: print('幼女') if is_hope: print('给予软糖') else: print('离开') elif age < 14: print('少女') if is_hope: print('给予布娃娃') else: print('离开') else : print('妇女') if is_hope: print('给予手机') else: print('离开')
-
可有多个次级的if结构,并且每个if的子代码前均要再空4格
五.练习
-
编写一个用户登录程序
如果用户名是Bob,密码为131713,则显示登陆成功
否则显示用户名或密码错误
(该部分内容请自行编写后对答案)
usersname = input("用户名>>>:") passport = input("密码>>>:") if usersname == 'Bob' and passport == '131713': print("登陆成功") else: print("登陆失败")
-
编写一个绩点评判系统(4.0分制),如果成绩>3.8,则为优秀,>3.7为良好,如果>3.6,为一般,如果>3,为及格,其他为不及格(该部分内容请自行编写后对答案)
score = input('请输入你的绩点') if score > '3.8': print('优秀') elif score > '3.7': print('良好') elif score > '3.6': print('一般') else: print('不及格')
III.循环结构
一.while循环
-
定义:让一段代码反复执行
-
方法:在开头输入while 他ure:后续代码整体缩进
while True: usersname = input("用户名>>>:") passport = input("密码>>>:") if usersname == 'Bob' and passport == '131713': print("登陆成功") else: print("登陆失败")
-
该循环永远不会终止,直到ture转为false
-
可以通过numbers代码控制循环次数,eg:循环10次
numbers = 1 while numbers <= 10: usersname = input("用户名>>>:") passport = input("密码>>>:") if usersname == 'Bob' and passport == '131713': print("登陆成功") else: print("登陆失败") numbers += 1
二.break和continue循环
-
break循环:即结束本层循环—结束本层while循环
numbers = 1 while numbers <= 10: usersname = input("用户名>>>:") passport = input("密码>>>:") if usersname == 'Bob' and passport == '131713': print("登陆成功") break #登录成功时结束循环 else: print("登陆失败") numbers += 1 #仅有10次登录失败机会
-
continue结构:重复生成等差或者等比数字时,可通过该结构跳过某个或者某些循环
eg:打印1-10的数字,并跳过4
count = 1 while count < 11: if count == 4: count += 1 continue print(count) count += 1
三.找bug方法
在pycharm中以debug模式运行代码
- 在代码框中点选分支部分数行名(右侧1、2、3、4),在以上代码中为第二行
- 右键代码部分选择“Debug”运行
- 通过F7观察代码运行过程,找寻Bug所在