day05 流程控制之while循环、for循环

今日内容:   循环结构: 什么是循环结构?   为什么要用循环结构?   如何使用循环结构? 语法:流程控制之while循环    流程控制之for循环         什么是循环结构? 重复做一件事 为什么要用循环结构? 让计算机像人一样重复做一件事       如何使用循环结构? 一、while循环:条件循环 语法: while 条件: 代码1 代码2 代码3   while的运行步骤: 步骤1:如果条件为真,那么依次执行:代码1、代码2、代码3、...... 步骤2:执行完毕后再次判断条件 如果条件为True则再次执行:代码1、代码2、代码3、...... 如果条件为False,则循环终止   while循环的基本使用: 例: s = 0 tag = True while tag: if s == 5: tag = False print(s) s += 1   s = 0 while s <= 5: print(s) s += 1   例: # 打印0-10之间的偶数 count = 0 while count <= 10: if count % 2 == 0: print('loop' , count) -------------------------》逗号可以隔开输入内容 count += 1   死循环和效率问题: while True: 1+1 纯计算无io的死循环会导致致命的效率问题     退出循环的2种方法: 例: username = "jay" passwd = "666"   while True:   inp_name = input("输入账号:") inp_pwd = input("输入密码:")   if inp_name == username and inp_pwd == passwd: print("登录成功!")   else: print("账号或密码错误")   此时,考虑:输对了应该不用再重复 退出循环的2种方法: 方法一:while+tag的使用,将条件改成False,是本次循环运行完毕后,等到下次循环条件,判断时才会生效 username = "JAY" passwd = "666"   tag = True while tag:   inp_name = input("输入账号:") inp_pwd = input("输入密码:")   if inp_name == username and inp_pwd == passwd: print("登录成功!") tag = False #之后的代码还会运行,下次循环判断条件时才会生效 else: print("账号或密码错误")   print("----------end-----------") ------------------------------》会打印出来   方法二:while+break的使用 只要运行到break就会立刻终止本层循环 username = "JAY" passwd = "666"   while True:   inp_name = input("输入账号:") inp_pwd = input("输入密码:")   if inp_name == username and inp_pwd == passwd: print("登录成功!") break #立刻终止本层循环 else: print("账号或密码错误")   print("----------end-----------")------------------------- 》不会打印出来   所以,这两种方式用哪一种呢? 看需求,也就是最后的代码print("----------end-----------")需要不需要运行   while循环嵌套+break   username = "jay" passwd = "666"   while True:   inp_name = input("输入账号:") inp_pwd = input("输入密码:")   if inp_name == username and inp_pwd == passwd: print("登录成功!") while True: cmd = input("输入命令:") if cmd == 'quit': break else: print('命令{x}正在运行'.format(x=cmd)) break else: print("账号或密码错误")   while循环嵌套+tag 在某一层直接退出所有层的循环,但是原理是在下一次循环时结束 就让所有while循环的条件都用同一个变量,该变量的初始值为True,一旦在某一层将该变量的值改成False,则所有层的循环都结束 username = "jay" passwd = "666"   tag = True while tag:   inp_name = input("输入账号:") inp_pwd = input("输入密码:")   if inp_name == username and inp_pwd == passwd: print("登录成功!") while tag: cmd = input("输入命令>:") if cmd == 'quit': tag = False else: print('命令{x}正在运行'.format(x=cmd))   else: print("账号或密码错误")   while+continue:结束本次循环,直接进入下一次 例:打印0,1,2,3,5 跳过2,4 count = 0 while count < 6: if count == 2 or count == 4: count += 1-----------------》先加在continue前面,否则continue运行,不会运行后面的程序,会直接返回循环,卡在4上 continue else: print(count) count += 1   while+else:else包含的代码会在while循环结束后,并且while循环是在没有被break打断的情况下,正常结束的,才会运行,是针对break的 count = 0 while count < 6: print(count) count += 1 else: print('********&&&&&&&&&&&')       count = 0 while count < 6: if count == 4: break print(count) count += 1   else:------------------------------------------------------------》不会运行 print('********&&&&&&&&&&&')   应用案例: 案例一、用户认证程序 通常认证失败的情况下,会要求用户重新输入用户名和密码进行验证,如果我们想给用户3次试错机会,并且提示“输入错误3次,退出”,登录成功了继续后续操作 username = "jay" passwd = "666"   count = 0 while count < 3:   inp_name = input("输入账号:") inp_pwd = input("输入密码:")   if inp_name == username and inp_pwd == passwd: print("登录成功") while True: cmd = input('输入操作指令:') if cmd == 'q': break else: print('命令{x}正在运行...'.format(x=cmd)) ---------------》.format()格式化形式 # print('命令 <%s>正在运行...' % cmd)-------------------》一个意思 break else: print("账号或密码错误") count += 1 else: print("账号密码输错3次,退出程序")       二、for循环:循环取值,便利值 1 、基本用法: 迭代式循环:for 语法:   for i in range(10):     缩进的代码块 例:取列表list的值 names = ['jay', 'jack', 'mike', 'seven'] 用while: # 打印列表name的内容   count = 0 while count < 5:-----------------------------------> < len(names):表示列表长度 print(names[count]) count += 1   用for: for i in names: print(i)   取字典dic的值: dic = {'k1': 111, 'k2': 222, 'k3': 333} for i in dic: print(i,dic[i])   取列表的值 for x,y in [['name', 'jay'], ['age', 18], ['job', 'music']]: #x,y = ['name','jay'] print(x,y)   2、for+break continue else同while一样   3、for+range:弥补for重复操作太繁琐的弊端 例: x = 0 while x < 10000: print(111) x += 1   等同于:   for x in range(10000): print(111)         扩充知识点: cmd模式下: python2中,range(5)------》[0,1,2,3,4] python3中,range(5)------》[0,5]    如果把列表当中的元素比喻为鸡蛋,那么列表就上装鸡蛋的筐子 在python2中,如果调用了range(10000),会真的创建一个能装下10000个鸡蛋的“筐子”,占用内存空间 在python3中做了优化,把这个装鸡蛋的“筐子”做成了一只生蛋的“老母鸡”,“老母鸡”不会占用多大内存空间,for循环每次需要一个值的时候,它会给你一个蛋,你要10000个蛋,它会给你生10000个蛋,从而减少了内存空间的浪费,后面会学到什么是“老母鸡”

上一篇:python学习第二天


下一篇:linux day29最新(元字符,脚本文件加入选项,if判断,while循环,for循环)