流程控制指的是控制程序(事务)的执行流程
顺序结构:
从上往下依次执行
分支结构:
根据条件判断的结果作出不同的执行流程
Typora中flow语法实现分支结构流程图: st=>start: x = 10 cond=>condition: x > 15? sub1=>subroutine: 打印x的值不大于15 io=>inputoutput: 打印x的值大于15 e=>end: 结束 st->cond cond(yes)->io->e cond(no)->sub1(right)->e
循环结构:
根据条件判断的结果反复的做相同的事情(重复执行某些代码块)
Typora中flow语法实现循环结构流程图: st=>start: a = 1 op=>operation: a = a + 1 cond=>condition: a > 10 ? sub1=>subroutine: 打印a的值 io=>inputoutput: 打印a大于10 e=>end: 结束 st->op->cond cond(yes)->io->e cond(no)->sub1(right)->op
1. 在python中使用缩进来代表代码的从属关系
if 18 > 19: print('阿根廷足球巨星梅西') # 此行代码属于if判断,是否执行由if判断的结果决定
2. 并不是所有的代码都可以有子代码(从属的代码)
目前可以有的:
if
else
while
3.如果多行代码属于同一个父代码,那么这多行代码需要保证相同的缩进
在python中推荐使用4个空格来表示缩进
4.具有相同缩进量的代码彼此之间按照顺序结构执行,没有从属关系
5.如果一行代码的结尾是冒号结束,那么紧挨着的下一行必然缩进
冒号的含义相当于要拥有子代码
例如:if、else、while
""" 语法 if 条件: 条件成立之后执行的子代码 子代码可以有多行 """ # 需求:如果进球数大于91 比梅球王进球还多 goals = 95 # 定义进球的数量 if goals > 91: # 判断进球是是否大于91 print('比梅球王进球还多')
""" 语法 if 条件: 条件成立之后执行的子代码 子代码可以有多行 else: 条件不成立执行的子代码 子代码可以有多行 """ # 需求:如果进球数大于91,比梅球王进球数还多 否则,继续训练 goals = 59 if goals > 91: print('比梅球王进球数还多') else: print('继续训练')
语法 if 条件1: 条件1成立时执行的子代码 子代码可以有多行 elif 条件2: 条件1不成立;;;条件2成立执行的子代码 子代码可以有多行 elif 条件3: 条件1和条件2都不成立;;;条件3成立执行的子代码 子代码可以有多行 else: 上述条件都不成立;;;执行的子代码 子代码可以有多行
""" 需求:如果球员名字是梅西则打印阿根廷球王,如果是C罗则打印葡萄牙球王,如果是林加德则打印大英帝国球王,如果是其他名字则打印其他球王 """ name = input('请输入球员名字:') if name == '梅西': print('阿根廷球王') elif name == 'C罗': print('葡萄牙球王') elif name == '林加德': print('大英帝国球王') else: print('其他球王')
age = int(input('请输入年龄:')) if age <= 25: print('读博士之前的年龄') if age > 22: print('正是读硕士的年龄') else: print('读小学、中学、大学的年龄') else: print('正是读博士的年龄')
while 条件: 条件成立之后执行的循环体代码 1.判断条件是否成立,如果成立则执行循环体代码 2.循环体代码执行完毕后,再次判断条件是否成立; 如果成立则继续执行循环体代码; 如果不成立则跳出循环
# 编写一个无限输入用户名和密码的登录程序 while True: # 条件恒成立,无限循环 name = input('请输入用户名:') # 获取输入的用户名 passwd = input('请输入密码:') # 获取输入的密码 if name == '梅西' and passwd == '30': # 判断用户名或密码是否正确 print('登录成功') else: print('用户名或密码错误')
break是用于直接结束本层循环
break只能结束所在的那一层循环
# 当用户名和密码输入正确时,显示登录成功,并且结束循环,按顺序执行同级代码; # 输入错误时,显示用户名或密码错误,无限获取输入,直到正确 while True: # 条件恒成立,无限循环 name = input('请输入用户名:') # 获取输入的用户名 passwd = input('请输入密码:') # 获取输入的密码 if name == '梅西' and passwd == '30': # 判断用户名或密码是否正确 print('登录成功') break # 结束本层循环 else: print('用户名或密码错误') print('阿根廷球王梅西') # 此行代码的运行意味着循环已结束
用于结束本次循环,直接开始下一次循环(continue的使用频率比break要低)
# 打印1~10的数字(除了4不打印) num = 1 # 令初始值等于1,按顺序执行同级别代码,开始循环 while num < 11: # 当num的值小于11的时候,执行循环体代码 if num == 4: num += 1 continue # 当num的值为4时,结束本次循环,直接跳到条件判断的地方重新执行;;如果没有上一行的赋值代码,程序将陷入死循环 print(num) num += 1
debug可以将瞬间执行完成的代码一步一步执行
1.编写一个猜年龄的游戏:
基本要求
如果不对的情况下可以猜三次 如果对了直接结束
拔高练习
三次机会用完之后提示用户是否继续猜测 如果用户输入了y
则再给用户三次机会 如果用户输入n则直接结束
count = 0 while count < 3: age = int(input('请输入您猜想的数字:')) if age == 18: # 猜年龄是否为18 print('猜对了') break # 猜对直接结束本层循环 else: print('猜错了') count += 1 # 猜测的次数加1 if count == 3: # 当猜错3次时 result = input('已猜错3次,继续猜3次请按y,结束请按n:') # 获取用户输入 if result == 'y': # 用户想继续猜3次 count = 0 # 将count的计数归零,继续执行循环 elif result == 'n': # 用户不想继续猜3次 break # 错误次数已经达到,直接结束本层循环