02 流程控制之while循环

02 流程控制之while循环

​```python

一、什么是循环?

  • 循环就是重复做一件事。

二、为什么要有循环?

  • 让计算机能够和人一样重复去做某些事。

三、while 循环的基本使用

  • 伪代码示例
print('-----------start----------')
while 条件:
     代码1
     代码2
     代码3
print('-----------end----------')
  • 应用:打印数字0~4
count = 0
while count < 5:    # count值0~4之间条件成立,共循环5次
    print(count, end=' ')   # 0 1 2 3 4
    count += 1

四、while 死循环与效率问题

  • 死循环:循环永远不会终止,才称之为死循环

1、死循环不会引发致命的效率问题:纯输入input

while True:
    inp = input('纯输入input>>:')
    print(inp)

2、死循环之影响不大的效率问题:纯输出print

while True:
    print('纯输出print')

3、死循环之产生致命的效率问题:纯计算

while True:
    1 + 1
    
# continue比上面纯计算破坏性还要大    
while True:
    continue

总结

  • 拓展:条件判断的效率 True > 数字,因为数字是
  • 总结:死循环本身是无害的,纯计算的死循环才是。

五、while 循环的应用

  • 这里while循环,解决了重复代码问题,解决了输入正确不应该重复。
# 需求:用户账号密码验证,让用户输入错误可以重新输入
username = 'egon'
password = '123'
while True:
    inp_username = input('please input your username>>:')
    inp_password = input('please input your password>>:')
    if inp_username == username and inp_password == password:
        print('登录成功')
    else:
        print("登录失败")

六、while 退出循环的两种方式

1、方式一:将条件改为False,只有在本次循环结束,等到下一次循环判断条件时,才会生效。(注意:下一次循环判断条件)

username = 'egon'
password = '123'
tag = True
while tag:
    inp_username = input('please input your username>>:')
    inp_password = input('please input your password>>:')
    if inp_username == username and inp_password == password:
        print('登录成功')
        tag = False  # 注意:之后的代码还会运行,下次循环判断时才生效
    else:
        print("登录失败")
        
    print('------嘿嘿!我运行了!-----')

2、方式二:break,只要运行到break就会立刻终止本层循环(注意:终止本层循环)

username = 'egon'
password = '123'
while True:
    inp_username = input('please input your username>>:')
    inp_password = input('please input your password>>:')
    if inp_username == username and inp_password == password:
        print('登录成功')
        break  # 注意:运行到break就会立刻终止本层循环
    else:
        print("登录失败")

    print('------嘿嘿!我运行了!-----')

七、while循环嵌套

1、伪代码示例:每一层都配备一个break

while 1: 
    While 2:
        While 3:
            break   # 我结束while循环条件为3的循环哦
        break   # 我结束while循环条件为2的循环哦
    break  # 我结束while循环条件为1的循环哦   

2、伪代码示例:在最内层,一下结束所有的循环。

tag = True
while tag:
    while Tag:
        while Tag:
            tag = False  

3、实例:纯break使用


username = 'egon'
password = '123'
while True:
    inp_username = input('please input your username>>:')
    inp_password = input('please input your password>>:')
    if inp_username == username and inp_password == password:
        print('登录成功')
        while True:
            inp_cmd = input('please input your cmd>>:')
            if inp_cmd == 'q':
                print('再见,亲爱的!')
                break   # 这里是退出里面while循环
            print("命令{cmd}正在运行。。。".format(cmd=inp_cmd))
        break   # 这里是退出最外层while循环
    else:
        print("登录失败")

4、实例:改变条件为False

username = 'egon'
password = '123'
tag = True
while tag:
    inp_username = input('please input your username>>:')
    inp_password = input('please input your password>>:')
    if inp_username == username and inp_password == password:
        print('登录成功')
        while tag:
            inp_cmd = input('please input your cmd>>:')
            if inp_cmd == 'q':
                print('再见,亲爱的!')
                tag = False     # 这里修改了所有while的条件,里面的while循环下一次判断条件时里层while循环结束,程序继续执行,又在下一次外层循环下一次判断条件时外层循环结束。
            else:
                print("命令{cmd}正在运行。。。".format(cmd=inp_cmd))
    else:
        print("登录失败")

八、while+continue

  • continue:结束本次循环,直接进入到下一次循环(注意:continue之后添加同级别代码毫无意义,因为永远无法运行)
# 需求:打印1~8之前的数,其中4、7不打印
count = 1
while count < 9:    # count条件成立范围:1~8
    if count == 4 or count == 7:
        count += 1
        continue
        # count += 1  # 注意:continue之后添加同级别代码毫无意义,因为永远无法运行
    print(count, end=" ")
    count += 1

九、while+else: 争对break

  • else:else包含的子代码块,只有在while循环正常结束后才会执行,如果while循环被break打断包含的子代码块不会执行

1、应用案例版本1:用户登录,输错三次退出程序, 打印错误提示(没有用到else)

username = 'egon'
password = '123'
count = 0
tag = True
while tag:
    if count == 3:  # 每次循环开始,都判断用户的错误次数是否达到了3次,也就是用户第4次输入了
        print('输错3次退出循环了啊!')
        break
    inp_username = input('please input your username>>:')
    inp_password = input('please input your password>>:')
    if inp_username == username and inp_password == password:
        print('登录成功')
        while tag:
            inp_cmd = input('please input your cmd>>:')
            if inp_cmd == 'q':
                print('再见,亲爱的!')
                tag = False
            else:
                print("命令{cmd}正在运行。。。".format(cmd=inp_cmd))
    else:
        print("登录失败")
        count += 1   # 用户输错一次,对用户错误次数进行累加

2、应用案例版本2:用户登录,输错三次退出程序,打印错误提示。优化:while比较条件 + else的利用 + 登录成功break程序else不需要执行

username = 'egon'
password = '123'
count = 0
while count < 3:
    inp_username = input('please input your username>>:')
    inp_password = input('please input your password>>:')
    if inp_username == username and inp_password == password:
        print('登录成功')
        while True:
            inp_cmd = input('please input your cmd>>:')
            if inp_cmd == 'q':
                print('再见,亲爱的!')
                break
            print("命令{cmd}正在运行。。。".format(cmd=inp_cmd))
        break   # 这条break代码与else子代码块的运行息息相关,这条代码只有用户登录成功,且输入命令结束以后才执行,也就是说用户登录成功,else中子代码块并不需要执行。
    else:
        print("登录失败")
        count += 1   # 用户输错一次,对用户错误次数进行累加
else:
    print('输错3次退出循环了啊!') 

猜你喜欢

转载自www.cnblogs.com/yang1333/p/12451683.html
今日推荐