10、Python流程控制之while循环

一、循环的语法与基本使用

1.1 什么是循环结构?

  循环结构就是重复执行某段代码块

1.2 为什么要用循环结构?

  为了让计算机具备像人一样循环做事的能力,所以程序中必须有相应的机制来控制计算进行循环。

1.3 如何使用循环结构?

  python中有while与for两种循环机制,其中while循环称之为条件循环,语法如下:

while 条件:
    代码1     
    代码2     
    代码3
while的运行步骤:
步骤1:如果条件为真,那么依次执行:代码1、代码2、代码3、......
步骤2:执行完毕后再次判断条件,如果条件为True则再次执行:代码1、代码2、代码3、......,如果条件为False,则循环终止
>>> count=0
>>> while count < 5:
...     print(count)
...     count+=1
...
0
1
2
3
4

二、死循环与效率问题

  不会结束的循环,称之为死循环。一般的死循环是无害的,影响不太大,但是纯计算无io的死循环导致致命的效率问题,会不停的计算。

while 1:
    print('xxxx')  # 输出,output

三、循环的应用

3.1 while循环的基本使用:

#用户认证程序的基本逻辑就是接收用户输入的用户名密码然后与程序中存放的用户名密码进行判断,判断成功则登陆成功,判断失败则输出账号或密码错误
username = "jason"
password = "123"

inp_name =  input("请输入用户名:")
inp_pwd =  input("请输入密码:")
if inp_name == username and inp_pwd == password:
    print("登陆成功")
else:
    print("输入的用户名或密码错误!")
#通常认证失败的情况下,会要求用户重新输入用户名和密码进行验证,为了避免写重复的代码以及复制,那么可以使用循环语句(使用while循环实现)
username = "jason"
password = "123"
while Ture:
    inp_name = input("请输入用户名:")
    inp_pwd = input("请输入密码:")
    if inp_name == username and inp_pwd == password:
        print("登陆成功")
    else:
        print("输入的用户名或密码错误!")

四、退出循环的两种方式

4.1 方法一:

  将条件改成False,等到下次循环判断条件时才会生效

tag=True
while tag:
    inp_name=input('请输入您的账号:')
    inp_pwd=input('请输入您的密码:')

    if inp_name  == username and inp_pwd == password:
        print('登录成功')
        tag = False # 之后的代码还会运行,下次循环判断条件时才生效
    else:
        print('账号名或密码错误')

    print('====end====')

4.2 方法二:

  break,只要运行到break就会立刻终止本层循环

while True:
    inp_name=input('请输入您的账号:')
    inp_pwd=input('请输入您的密码:')

    if inp_name  == username and inp_pwd == password:
        print('登录成功')
        break # 立刻终止本层循环,后续代码不再运行
    else:
        print('账号名或密码错误')

    print('====end====') # 本行代码不运行,break处已结束

五、while循环嵌套与结束

5.1 while循环嵌套+tag的使用:

  针对嵌套多层的while循环,如果我们的目的很明确就是要在某一层直接退出所有层的循环,其实有一个窍门,就让所有while循环的条件都用同一个变量,该变量的初始值为True,一旦在某一层将该变量的值改成False,则所有层的循环都结束 

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

例如:

username="qwert"
userpsd="12345"

tag=True
while tag:
    inp_name=input("请输入您的账号:")
    inp_psd = input("请输入您的密码:")
    if username==inp_name and userpsd == inp_psd:
        print("登录成功")
        while tag:
            cmd = input("请输入命令:")
            if cmd == "q":
                tag=False
            else:
                print('命令{x}正在运行'.format(x=cmd))
    else:
        print("登录失败")

5.2 while循环嵌套+break的使用:

  如果while循环嵌套了很多层,要想退出每一层循环则需要在每一层循环都有一个break  

while True:
    while True:
        while True:
            break
        break
    break

例如:

username="qwert"
userpsd="12345"

while True:
    inp_name=input("请输入您的账号:")
    inp_psd = input("请输入您的密码:")
    if username==inp_name and userpsd == inp_psd:
        print("登录成功")
        while True:
            cmd = input("请输入命令:")
            if cmd == "q":
                break
            print('命令{x}正在运行'.format(x=cmd))
        break # 立刻终止本层循环
    else:
        print("登录失败")

六、while +continue的使用:

  结束本次循环,直接进入下一次。PS:在continue之后添加同级代码毫无意义,因为永远无法运行。

count=0
while count < 6:
    if count == 4:
        count+=1
        continue        
    print(count)
    count+=1

七、while +else的使用:

  针对break,结束while循环。else包含的代码会在while循环结束后,并且while循环是在没有被break打断的情况下正常结束的,才会运行。

count=0
while count < 6:
    if count == 4:
        break
    print(count)
    count+=1
else:
    print('======>') # 不会运行
count=0
while count < 6:
    if count == 4:
        count+=1
        continue
    print(count)
    count+=1
else:
    print('======>') # 会运行

应用案例:
版本一:

count=0
tag=True
while tag:
    if count == 3:
        print('输错三次退出')
        break
    inp_name=input('请输入您的账号:')
    inp_pwd=input('请输入您的密码:')

    if inp_name  == username and inp_pwd == password:
        print('登录成功')
        while tag:
            cmd=input("输入命令>: ")
            if cmd == 'q':
                tag=False
            else:
                print('命令{x}正在运行'.format(x=cmd))
    else:
        print('账号名或密码错误')
        count+=1

版本二:

count=0
while count < 3:
    inp_name=input('请输入您的账号:')
    inp_pwd=input('请输入您的密码:')

    if inp_name  == username and inp_pwd == password:
        print('登录成功')
        while True:
            cmd=input("输入命令>: ")
            if cmd == 'q': # 整个程序结束,退出所有while循环
                break
            else:
                print('命令{x}正在运行'.format(x=cmd))
        break
    else:
        print('账号名或密码错误')
        count+=1
else:
    print('输错3次,退出')

猜你喜欢

转载自www.cnblogs.com/zuiyouyingde/p/12450499.html