流程控制
流程控制>>>:控制事物的执行流程
事物执行流程总共可以分为三种
1.顺序结构
从上往下依次执行 我们之前所编写的代码都属于该结构
2.分支结构
事物的执行会根据条件的不同做出不同的执行策略
3.循环结构
事物的执行会根据某个条件出现重复
顺序结构
所需材料:排骨500克,料酒1勺,生抽2勺,胡椒粉半勺,盐适量,糖1勺,淀粉2汤匙,大蒜一头,老抽1小勺。
步骤1.排骨剁成小块洗净,加入料酒,生抽,胡椒粉,盐,淀粉抓匀,腌制30分钟。
步骤2.腌制好的排骨,入油锅炸制金黄,捞出沥干油备用。
步骤3.大蒜剁成蒜末 … …
按照步骤做就可以了!
分支结构
如下 先判断富or不富 如果富 则yes,嫁,如果不富,则判断帅不帅… 依此类推!
循环结构
地铁每天都从早运行到晚 ,这是一个循环结构,直到满足条件:地铁下班了! 就会跳出这个循环。
python缩进
1. python中用缩进表示代码之间的从属关系。
缩进的代码 称为 子代码
2. 并不是所有的代码都可以拥有缩进的代码.
print('hello')
print('hello,world') # print不能拥有子代码
if True:
print('hello world') # if语句可以拥有子代码print('hello world')
3.如果有多行子代码属于一个父代码,那么他们必须有相同的缩进量
if True:
print('hello world')
print('hi') # 这样是不行的
4.当某一行代码需要编写子代码的时候 那么这一行代码的结尾肯定需要冒号
5.相同缩进量的代码彼此之间平起平坐 按照顺序结构依次执行
# 建议使用四个空格作为缩进量,快捷键tab
# 在pycharm中遇到父代码时,按回车会自动缩进。
分支结构
1.单if
分支结构:
if 条件:
条件成立之后才会执行的代码快
ps:单if可以借助于流程图理解
username = 'oshio'
if username == 'oshio':
print('hello')
'''if语句接受一个bool值,username == 'oshio'是一个表达式,表达式运算之后得到true。'''
'''因为这个值是true,所以if下的子代码会输出,如果是false,则不会执行if下的代码。
2.if else
分支结构:
if...else...分支结构
if 条件:
条件成立之后执行的子代码
else:
条件不成立执行的子代码
3.if elif else
分支结构
if...elif...else分支结构
if 条件1:
条件1成立之后执行的子代码
elif 条件2:
条件1不成立 条件2成立执行的子代码
elif 条件3:
条件1和2都不成立 条件3成立执行的子代码
else:
上述条件都不成立 执行的子代码
get_data = input('请输入你的名字:')
if get_data == 'jason':
print('%s-->超级管理员' % (get_data,))
elif get_data == 'tom':
print('%s-->普通管理员' % (get_data,))
elif get_data == 'jack' or get_data == 'rain':
print('%s-->业务主管' % (get_data,))
else:
print('%s-->普通用户' % (get_data,))
'''在 if elif else分支中只有一个会执行,当if elif都不执行时,else捕获剩下的所有情况。'''
循环分支结构
就是想让一些代码反复的执行
while 条件:
条件成立之后执行的子代码(循环体代码)
1.先判断条件是否成立
2.如果成立则执行循环体代码
3.循环体代码执行完毕后再次回到条件判断处 判断条件是否成立
4.如果成立 则继续执行循环体代码
5.按照上述规律依次执行 直到条件不成立才会结束循环体代码的执行
count = 1
while count < 5: # 当不满足count < 5,就不会执行下面的循环体
print('hello world')
count += 1
扩展
1.while else
while 条件:
循环体代码
else:
循环体代码没有被强制结束的情况下 执行完毕就会执行else子代码
break # 强行结束循环体
while循环体代码一旦执行到break会直接结束循环
continue # 直接跳到条件判断处
while循环体代码一旦执行到continue会结束本次循环 开始下一次循环
cont = 1
while cont < 3 :
print('hello')
cont += 1
else:
print('hi') # hi 会输出
cont = 1
while cont < 3 :
print('hello')
break # 循环被break强制结束了!
else:
print('hi') # hi 不会输出 只会输出hello
# for循环也可以使用 for else,用法相同
2.字符串的比较
print('9' > '100000') # True
print('1' > '02') # True
print('02' > '20') # False
print('0'>'') # True
print('9c' > 'b') # False # 9和b不能比较返回false
print('9c' > '1b') # True
'''字符串比较 只看字符串的第一位 第一位是数字则比较数字大小'''
3.pass
语句
pass 语句不执行任何操作。语法上需要一个语句,但程序不实际执行任何动作时,可以使用该语句。
while True:
pass
4.python3.10支持match
语句
match语句可以将一个目标值与一个或多个字面值进行比较
match status:
case 400: # 将status的值 和 400 比较 如果相同则输出 'Bad request'
return "Bad request"
case 404:
return "Not found"
case 418:
return "I'm a teapot"
case _:
return "Something's wrong with the internet"
更多扩展关于while循环
1.死循环
真正的死循环是一旦执行 CPU功耗会急速上升 直到系统采取紧急措施
尽量不要让CPU长时间不间断运算
2.嵌套及全局标志位
强调:一个break只能结束它所在的那一层循环
强调:有几个while的嵌套 想一次性结束 就应该写几个break
强调:如果不想反复写break 可以使用全局标志位
is_flag = True
while is_flag:
username = input('username>>>:')
password = input('password>>>:')
if username == 'jason' and password == '123':
while is_flag:
cmd = input('请输入您的指令>>>:')
if cmd == 'q':
is_flag = False
print('正在执行您的指令:%s' % cmd)
else:
print('用户名或密码错误')
练习描述
1.根据用户输入内容打印其权限
'''
jason --> 超级管理员
tom --> 普通管理员
jack,rain --> 业务主管
其他 --> 普通用户
'''
2.编写用户登录程序
要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录
eg:black_user_list = ['jason','kevin','tony']
如果用户名是黑名单以外的用户则允许登录(判断用户名和密码>>>:自定义)
eg: oscar 123
3.编写用户登录程序
用户如果登录失败 则只能尝试三次
用户如果登录成功 则直接结束程序
4.猜年龄的游戏
假设用户的真实年龄是18 编写一个猜年龄的游戏 获取用户猜测的年龄
基本要求:可以无限制猜测 每次猜错给出提示(猜大了 猜小了) 猜对则结束程序
拔高练习:每次猜测只有三次机会 一旦用完则提示用户是否继续尝试 用户通过输入n或者y来表示是否继续尝试 如果是y则继续给用户三次猜测机会 否则结束程序
用户登录
false_num = 0 # 初始错误次数
can_use_times = 2 # 初始可尝试次数
black_user_list = ['tony'] # 黑名单列表
super_admin_list = ['jason'] # 超级管理员列表
admin_list = ['tom'] # 管理员列表
boss_list = ['rain'] # 业务主管列表
username = input('>>输入用户名:')
if username in black_user_list: # 判断是否在黑名单
print('黑名单禁止登入')
else:
while false_num < 3: # 密码只能输错3次 false_num 0 --> 3
password = input('>>请输入密码:')
if password == '123':
if username in super_admin_list:
print('登录成功!')
print('%s——>超级管理员' % (username,))
break # 登录成功结束循环
elif username in admin_list:
print('登录成功!')
print('%s——>普通管理员' % (username,))
break
elif username in boss_list:
print('登录成功!')
print('%s——>业务主管' % (username,))
break
else:
print('%s——>普通用户' % (username,))
break
else:
print(f'登录失败,剩余可用次数:{can_use_times}')
false_num += 1 # 增加错误次数
can_use_times -= 1 # 减少可用次数
if false_num >= 3: # 输错3次之后跳出循环
print('不能再登录了')
猜年龄
age = 18
num = 0
while True:
while num < 3:
glass = int(input('猜猜我年龄:'))
if glass == 18:
print('猜对了')
break
elif glass > 18:
print('猜大了')
num += 1
elif glass < 18:
print('猜小了')
num += 1
if glass != 18:
data = input('要重新猜吗?')
if data == 'y':
num = 0
continue
if data == 'n':
break
else:
break