zoukankan      html  css  js  c++  java
  • 8.1 day6

    流程控制之while循环

    一、语法**

    循环就是一个重复的过程,我们人需要重复干一个活,那么计算机也需要重复干一个活。ATM验证失败,那么计算机会让我们再一次输入密码。这个时候就得说出我们的wile循环,while循环又称为条件循环。

    while 条件
        code 1
        code 2
        code 3
        ...
    
    while True:
        print('*1'*100)
        print('*2'*100)
    # 实现ATM的输入密码重新输入的功能
    while True:
        user_db = 'nick'
        pwd_db = '123'
    
        inp_user = input('username: ')
        inp_pwd = input('password: ')
        if inp_user == user_db and pwd_db == inp_pwd:
            print('login successful')
        else:
            print('username or password error')
    

    上述代码虽然实现了功能,但是用户密码输对了,他也会继续输入。

    二、while + break

    break的意思是终止掉当前层的循环,执行其他代码。

    while True:
        print('1')
        print('2')
        break
        print('3')
    1
    2
    

    上述代码的break毫无意义,循环的目的是为了让计算机和人一样工作,循环处理事情,而他直接打印1和2之后就退出循环了。而我们展示下有意义的while+break代码的组合。

    while True:
        user_db = 'nick'
        pwd_db = '123'
    
        inp_user = input('username: ')
        inp_pwd = input('password: ')
        if inp_user == user_db and pwd_db == inp_pwd:
            print('login successful')
            break
        else:
            print('username or password error')
    
    print('退出了while循环')
    username: nick
    password: 123
    login successful
    退出了while循环
    

    三、while + continue

    continue的意思是终止本次循环,直接进入下一次循环

    n = 1
    while n < 4:
        print(n)
        n += 1
    1
    2
    3
    n = 1
    while n < 10:
        if n == 8:
            # n += 1  # 如果注释这一行,则会进入死循环
            continue
        print(n)
        n += 1
    

    continue不能加在循环体的最后一步执行的代码,因为代码加上去毫无意义,如下所示的continue所在的位置就是毫无意义的。ps:注意是最后一步执行的代码,而不是最后一行。

    while True:
        if 条件1:
            code1
            code2
            code3
            ...
        else:
            code1
            code2
            code3
            ...
    
        continue
    

    四、while循环的嵌套

    ATM密码输入成功还需要进行一系列的命令操作,比如取款,比如转账。并且在执行功能结束后会退出命令操作的功能,即在功能出执行输入q会退出输出功能的while循环并且退出ATM程序。

    # 退出内层循环的while循环嵌套
    while True:
        user_db = 'nick'
        pwd_db = '123'
    
        inp_user = input('username: ')
        inp_pwd = input('password: ')
    
        if inp_user == user_db and pwd_db == inp_pwd:
            print('login successful')
    
            while True:
                cmd = input('请输入你需要的命令:')
                if cmd == 'q':
                    break
                print(f'{cmd} 功能执行')
        else:
            print('username or password error')
    
    print('退出了while循环')
    # 退出双层循环的while循环嵌套
    while True:
        user_db = 'nick'
        pwd_db = '123'
    
        inp_user = input('username: ')
        inp_pwd = input('password: ')
    
        if inp_user == user_db and pwd_db == inp_pwd:
            print('login successful')
    
            while True:
                cmd = input('请输入你需要的命令:')
                if cmd == 'q':
                    break
                print(f'{cmd} 功能执行')
            break
        else:
            print('username or password error')
    
    print('退出了while循环')
    username: nick
    password: 123
    login successful
    请输入你需要的命令:q
    退出了while循环
    

    五、tag控制循环退出

    # tag控制循环退出
    tag = True
    while tag:
        user_db = 'nick'
        pwd_db = '123'
    
        inp_user = input('username: ')
        inp_pwd = input('password: ')
    
        if inp_user == user_db and pwd_db == inp_pwd:
            print('login successful')
    
            while tag:
                cmd = input('请输入你需要的命令:')
                if cmd == 'q':
                    tag = False
                print(f'{cmd} 功能执行')
        else:
            print('username or password error')
    
    print('退出了while循环')
    username: nick
    password: 123
    login successful
    请输入你需要的命令:q
    q 功能执行
    退出了while循环
    

    六、while + else

    while+else:else会在while没有被break时才会执行else中的代码。

    # while+else
    n = 1
    while n < 3:
        print(n)
        n += 1
    else:
        print('else会在while没有被break时才会执行else中的代码')
    1
    2
    else会在while没有被break时才会执行else中的代码
    

    流程控制之for循环

    一、语法

    为什么有了while循环,还需要有for循环呢?不都是循环吗?我给大家出个问题,我给出一个列表,我们把这个列表里面的所有名字取出来。

    name_list = ['nick', 'jason', 'tank', 'sean']
    
    n = 0
    while n < 4:
        # while n < len(name_list):
        print(name_list[n])
        n += 1
    nick
    jason
    tank
    sean
    

    字典也有取多个值的需求,字典可能有while循环无法使用了,这个时候可以使用我们的for循环。

    info = {'name': 'nick', 'age': 19}
    
    for item in info:
        # 取出info的keys
        print(item)
    name
    age
    name_list = ['nick', 'jason', 'tank', 'sean']
    for item in name_list:
        print(item)
    nick
    jason
    tank
    sean
    

    for循环的循环次数受限于容器类型的长度,而while循环的循环次数需要自己控制。for循环也可以按照索引取值。

    print(list(range(1, 10)))
    [1, 2, 3, 4, 5, 6, 7, 8, 9]
    for i in range(1, 10):  # range顾头不顾尾
        print(i)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # for循环按照索引取值
    name_list = ['nick', 'jason', 'tank', 'sean']
    # for i in range(5):  # 5是数的
    for i in range(len(name_list)):
        print(i, name_list[i])
    0 nick
    1 jason
    2 tank
    3 sean
    

    二、for + break

    for循环调出本层循环。

    # for+break
    name_list = ['nick', 'jason', 'tank', 'sean']
    for name in name_list:
        if name == 'jason':
            break
        print(name)
    nick
    

    三、for + continue

    for循环调出本次循环,进入下一次循环

    # for+continue
    name_list = ['nick', 'jason', 'tank', 'sean']
    for name in name_list:
        if name == 'jason':
            continue
        print(name)
    nick
    tank
    sean
    

    四、for循环嵌套

    外层循环循环一次,内层循环循环所有的。

    # for循环嵌套
    for i in range(3):
        print(f'-----:{i}')
        for j in range(2):
            print(f'*****:{j}')
    -----:0
    *****:0
    *****:1
    -----:1
    *****:0
    *****:1
    -----:2
    *****:0
    *****:1
    

    五、for+else

    for循环没有break的时候触发else内部代码块。

    # for+else
    name_list = ['nick', 'jason', 'tank', 'sean']
    for name in name_list:
        print(name)
    else:
        print('for循环没有被break中断掉')
    nick
    jason
    tank
    sean
    for循环没有break中断掉
    

    六、for循环实现loading

    import time
    
    print('Loading', end='')
    for i in range(6):
        print(".", end='')
        time.sleep(0.2)
    Loading......
    
  • 相关阅读:
    windows下Redis的安装和使用
    ansible plugins简介
    ansible roles例子
    openstack windows2012r2 glance镜像制作
    手动部署tidb(二进制包)集群
    4、ceph-deploy之配置使用对象存储
    3、ceph-deploy之配置使用文件系统
    2、ceph-deploy之配置使用RBD
    1、ceph-deploy之部署ceph集群
    ansible facts
  • 原文地址:https://www.cnblogs.com/bjlxxbj/p/11284580.html
Copyright © 2011-2022 走看看