## 流程控制 在现实生活中,我们做的每件事也是有一定流程去执行 流程控制基础 ### 顺序结构流程 按照从上到下语句依次执行 ```python print('开始') name = input('输入姓名') print(name) print('结束') ```  ### 分支结构流程 分条件执行 #### 单分支 ```python # if 判断条件: # 制表符 代码片段 age = input('请输入年龄') age = int(age) # int() 强制转换数据类型但是只能转换字符型数字 if age<28: print('小姐姐') ```  #### 双分支 ```python # if 判断条件: # 代码块 # else: # 代码块 age = input('请输入年龄') age = int(age) # int() 强制转换数据类型但是只能转换字符型数字 if age<28: print('小姐姐') else: print('老北鼻') ```  #### 多分支 ```python # if 判断条件: # 代码 #elif 判断条件: # 代码 #elif 判断条件: # 代码 #elif 判断条件: # 代码 #else: # 代码 #结束 score = input() score = int(score) if score > 90: print('优') elif score > 80: print('良') elif score > 70: print('中') elif score > 60: print('及格') else: print('不及格') ```  ### 循环结构流程 #### while循环 ```python # while 判断语句: # 如果成立者向下执行 # 代码 # 会一直输出看妹子 while 1: print('看妹子,看妹子') ```   while循环嵌套if分支 ```python #让一些代码反复的执行 # 先判断条件是否成立 # 条件成立则执行循环体代码 # 循环体代码执行完毕后再次回到条件判断处 判断条件是否成立 # 循环往复判断 直到条件不成立才会结束循环体代码的执行 # while 判断条件: # 循环体 # if 判断条件: # 代码 # elif 判断条件: # 代码 # else: # 代码 age = input('请输入年龄') age = int(age) while age > 16: if age < 25: print('正值青春年华') if age == 21: print('谈婚论价') elif age < 35: print('面临中年危机') else: print('老年养老') age -= 100 break # 强行结束循环体 continue # 立即结束本次循环,开始下次循环 直接跳转到条件判断处 while 判断条件: 循环体 循环体遇到continue立即结束本次循环 ```   #### while else 循环 ```python name = input('请输入姓名') while name == '张三': print(name) name = '李四' else: print('你是谁啊') ```   #### while循环补充 ```python 1. 死循环 在代码的编写过程可能和出现死循环,导致消耗大量计算机资源,直到系统采取紧急措施,如强制重启,死机等 count = 1 while True: count *= 5 这样运行后会占用大量计算机资源 2. 嵌套及全局标识符, 1.一个break只能结束他所在的那一次循环 2.有几个while循环的嵌套,想一次结束就应写几个,break 如果不想反复写break 可以使用全局标识符 帮助我们快速结束所有循环 flag = True while flag: print('123') while flag: print('456') flag = False print('abc') ``` #### for循环结构 ```python for 循环能做到的 while循环都可左到 只不过for循环在一些场景使用更简单 主要场景为:循环获取存储的多个数据的数据内部数据值 for循环的特点 1,擅长遍历取值 2.不需要结束条件,自动结束(遍历全部) 能被for循环的有: 常见的有字符串,列表,元组,字典,集合,等等可迭代对象 临时变量名也要做到见名知意 代码形式 for 临时变量名 in 遍历对象: 循环体 字符串 name_str = 'abcd' for st in name_str: print(st) # a b c d 单个字符 列表 name_list = ['name1','name2','name3'] for name in name_list : print(name) # name1 name2 name3 字典 比较特殊 name_dict = { 'name': 'zhang', 'job': 'sales', 'age': 18 } for dt in name_dict: print(dt) # name job age for循环的是字典的键,只有键参与遍历 for循环体内遇到break会里面结束整个循环 for循环体遇到continue会立马结束本次循环,开始执行下一次循环 for 临时变量 in 待遍历数据: for循环体 else: 子代码 for循环体代码没有break强制结束的情况下运行完毕后 运行 ``` #### range函数 可以帮助我们创建一个内部含有多个数字的数据,不是一次生成节省内存空间 ```python 用法 range(100) # 当只传一个参数时默认首个为0,直到,99,顾头不顾尾 #range(0, 100) 这样的一个形式 当使用时再去取 range(1,100) # 传如两个参数时,默认第一个值为,传入的第一个,后面直到,99 range(1,100,2) # 第三个参数相当于等差数列里的差值,默认不写等差值为1,如1,3,5,7····,99 #python2 range(10) # 直接生成所需要列表 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] # 如果range(10000000000000000),就占用大量内存空间 xrange(10) # 不直接产生列表而是一个迭代器 # xrange(10) #python3 range(10) # 在python3中取消了直接生产列表,用xrange,换成了range # 类似余一个工厂 不会占用太多内存空间 ``` ## 作业练习1 ```python # 1.根据用户输入内容打印其权限 # # jason --> 超级管理员 # tom --> 普通管理员 # jack,rain --> 业务主管 # 其他 --> 普通用户 ``` ```python while True: user_name = input('请输入用户名,退出(Q/q)') if user_name.upper() == 'Q': break if user_name == 'jason': print('超级管理员') elif user_name == 'tom': print('普通管理员有') elif user_name == 'jack' or user_name == 'rain': print('业务主管') else: print('普通用户') ``` ```python 2.编写用户登录程序 要求:有用户黑名单 如果用户名在黑名单内 则拒绝登录 eg:black_user_list = ['jason','kevin','tony'] 如果用户名是黑名单以外的用户则允许登录(判断用户名和密码>>>:自定义) eg: oscar 123 ``` ```python black_user_list = ['jason', 'kevin', 'tony'] while True: name = input('请输入用户名,退出(Q/q)') password = input('请输入用户密码') if name.upper() == 'Q': break if name in black_user_list: print('%s在黑名单,不允许登录' % name) # 判断是否在黑名单 continue if name == '张三' and password == '我是坤吧': # 判断用户名密码 print('%s,登录成功' % name) continue print('%s,用户名或密码错误' % name) ``` ```python 3.编写用户登录程序 用户如果登录失败 则只能尝试三次 用户如果登录成功 则直接结束程序 ``` ```python count = 0 while count < 3: user_name = input('用户名') pass_word = input('密码') if user_name == '坤坤' and pass_word == '鸡': # 判断用户名密码 print('登录成功') count = 0 continue count += 1 if count == 3: break print('登录失败,你还剩%s次' % (3-count)) ``` ```python 4.猜年龄的游戏 假设用户的真实年龄是18 编写一个猜年龄的游戏 获取用户猜测的年龄 基本要求:可以无限制猜测 每次猜错给出提示(猜大了 猜小了) 猜对则结束程序 拔高练习:每次猜测只有三次机会 一旦用完则提示用户是否继续尝试 用户通过输入n或者y来表示是否继续尝试 如果是y则继续给用户三次猜测机会 否则结束程序 ``` ```python count = 1 while True: age = input('请输入你猜的年龄') if not age.isdecimal(): print('输入不正确,请重新输入') continue age = int(age) if age == 18: print('猜对了') break if age > 18: print('猜大了') if age < 18: print('猜小了') if count >= 3: print('3次机会用完了是否继续') while True: user_in = input('退出或继续n/y') if user_in == 'y': count = 1 break elif user_in == 'n': exit() else: print('输入不正确') continue count += 1 print('你还剩%s次机会' % (4-count)) ``` ## 作业练习2 ```python 1.计算1-100所有的数之和 count1 = 0 for num1 in range(101): count += num1 print(count1) 2.判断列表中数字2出现的次数 l1 = [11,2,3,2,2,1,2,1,2,3,2,3,2,3,4,3,2,3,2,2,2,2,3,2] count2 = 0 for num2 in l1: if num2 == 2: count += 1 print(count2) #或者可以这样写 print(l1.count(2)) 3.编写代码自动生成所有页网址(注意总共多少页) https://movie.douban.com/top250 str_format = 'https://movie.douban.com/top250?start=%s&filter=' for num in range(10): print(str_format % (num*25)) 4.编写代码打印出下列图形(ps:for循环嵌套) ***** ***** ***** ***** for num in range(4): print('*****') ``` Last modification:September 28th, 2022 at 06:50 pm © 允许规范转载 Support 如果觉得我的文章对你有用,请随意赞赏 ×Close Appreciate the author Sweeping payments
Comment here is closed