• day 7 while循环


    #隐式布尔值: 0  none  空
    # 一、流程控制
    # 短路运算:偷懒原则,偷懒到哪个位置,就把当前位置的值返回
    # 为0
    # (10>3 and 10 and 0 and 10 )or( 10>3 and 1==1_)


    # 二、深浅copy
    # 二者分隔不开,原值一改后值也跟着改
    # 需求:1.拷贝原列表产生新列表
    # 2.想让两个列表完全独立开,针对的是改操作的独立而不是读操作
    #二、如何拷贝列表
    # 1 浅copy:把原列表第一层的内存地址不加区分完全拷贝一份给新的
    默认列表类型属于浅拷
    list1=['egon','lxx',[1,2]]
    list3=list1.copy()
    print(list2)
    2 深拷贝:新列表的改变与就列表完全分隔开,区分开可变与不可变类型的copy机制.
    针对不可变类型则用原来的地址,可变的类型开辟一个新的空间指向原来的值地址
    import copy
    lise3=copy.deepcopy()
    三、while循环
    1、循环的语法与基本使用

    while 条件:
    代码1
    代码2
    代码3
    print(3)
    while的运行步骤
    步骤1:如果条件为真,那么依次执行:代码1、代码2、代码3......
    步骤2:执行完毕后再次判断条件,如果条件为True则再次执行:代码1、代码2、代码3....

    例:

    count=0
    while  count<5:
    print(count)
    count+=1
    print('qdd')


    2.死循环与效率问题
    死循环:
    count=0
    while count <5:
    print(count) 会一直输出0
    如图:不会引发效率问题

     

    纯计算无io死循环会引发知名的效率问题:条件永远为真,并且进行运行计算

    3、 循环的应用

    # 需要解决的问题:1、重复代码 (while循环)
    # 2、输入正确不用重复
    username='egon'
    password='123'
    while True
    name=input('请输入你的账号:')
    pwd=input('请输入你的密码:')

    if name == username and pwd == password:
    print('登录成功')
    else:
    print('账号或密码错误')

    4、循环的终止方式
    方式一:将条件改为false,等到下次循环判断条件时才会生效

    username='egon'
    password='123'
    tag=True
    while tag:
    inp_name=input('请输入你的账号:')
    inp_pwd=input('请输入你的密码:')
    if inp_name == username and inp_pwd == password:
    print('登录成功')
    tag=False #之后的代码还会运行,下次循环判断条件才会生效
    else:

    print('账号或密码错误')
    方式二:break,只要运行到break就会立刻终止本层循环
    
    
    username='egon'
    password='123'

    while True:
    inp_name=input('请输入你的账号:')
    inp_pwd=input('请输入你的密码:')
    if inp_name == username and inp_pwd == password:
    print('登录成功')
    break #立刻结束本层循环
    else:
    print('账号或密码错误')
    
    
    5、while循环嵌套:每一层都必须配一个break

     例子一:

     例子二:改变条件的username='egpassword='123'

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

    if inp_name == username and inp_pwd == password:
    print('登录成功')
    while tag:
    cmd=input("输入命令>:")
    if cmd == 'q'
    tag=false
    print('命令{x}正在运行').foemat(x=cmd)
    tag=False
    else:
    print('账号或密码错误')
    6、while +continue:结束本次循环,直接进入下一次

    count=0

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

    7、while +else:针对break

    while true:
    ....
    else:
    print(‘else包含的代码会在while循环结束后,
    并且while循环是在没有被break 打断的情况下正常结束的才会运行’)
     
    
    
    
    
       



  • 相关阅读:
    HDU 1257 最少拦截系统(最长递减子序列的条数)
    POJ 2063 Investment 滚动数组+完全背包
    POJ 2392 Space Elevator 贪心+dp
    CodeForces 154A Hometask dp
    CodeForces 57C Array 组合计数+逆元
    hdu 4398 Template Library Management(贪心+stl)
    优先队列详解(转载)
    hdu 4393 Throw nails(优先队列)
    hdu 4022 Bombing(map,multiset)
    hdu 1027 Ignatius and the Princess II(产生第m大的排列,next_permutation函数)
  • 原文地址:https://www.cnblogs.com/suyuanyuan/p/12716253.html
Copyright © 2020-2023  润新知