zoukankan      html  css  js  c++  java
  • 7、循环之while循环和深浅copy

    一、while循环

    1.1、什么是循环结构?

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

    1.2、为什么需要循环结构?

      希望计算机能够像人一样具备重复去执行某件事的能力

    1.3、怎么使用while循环结构?

    1.3.1、循环语法的基本使用:while+else

    count=0

    while count<3:

      count+=1

    else:

      print(count)

    1.3.2、死循环与效率问题

    while True:

      print(1+1)     #  纯计算无IO会导致致命的效率问题。

    1.3.3、退出循环的两种方式

    1.3.3.1、将条件改为False,下次循环判断条件时才会生效。while+tag

    tag=True

    while tag:

      inp_name = input('请输入你的账号:')

      inp_pwd = input('请输入你的密码:')

      if inp_name == ursename and inp_pwd == input:

        print('登陆成功')

        tag=False

      else:

        print('账号或密码错误')

    1.3.3.2、break,只要运行到break,就会立即断开本层循环

    while True:

      inp_name = input('请输入你的账号:')

      inp_pwd = input('请输入你的密码:')

      if inp_name == ursename and inp_pwd == input:

        print('登陆成功')

        break

      else:

        print('账号或密码错误')

    1.3.4、while嵌套循环与结束

    1.3.4.1、将条件改成False

    username = '123'

    password = '321'

    tag=True

    while tag

      inp_name=input('请输入账号:')

      inp_psd = input('请输入密码:')

      if inp_name == username and inp_psd == password:

        print('登录成功')

        while tag:

          cmd=input('请输入命令:')

          if cmd=='q':

            print('正在登录')

            tag=False

          else:

            print('请输入正确命令:{a}'.format(cmd=a))

      else:

        print('登录失败')

    1.3.4.2、用break退出

    username = '123'

    password = '321'

    while 1:

      inp_name=input('请输入账号:')

      inp_psd = input('请输入密码:')

      if inp_name == username and inp_psd == password:

        print('登录成功')

        while :1:

          cmd=input('请输入命令:')

          if cmd=='q':

            print('正在登录')

            break

          else:

            print('请输入正确命令:{a}'.format(cmd=a))

        break

      else:

        print('登录失败')

    1.3.5、while+continue:结束本次循环,进入下一次循环

    count =0

    while count <6:

      if count == 4:

        count +=1  

        continue

      print(count)

      count +=1

    1.3.6、案例

    要求:允许登录三次,失败则退出,成功要求输入命令,否则继续输入

    username = ‘123’

    password = '321'

    count = 0

    while count < 3:

      inp_name = input('请输入你的账号:')

      inp_psd = input('请输入你的密码:')

      if username == inp_name and password == inp_psd:

        print('账号密码正确')

        while 1:

          tag = input('请输入指令:')

          if tag==‘a’:

            print('正在登录中')

            break

          else:

            print('输入的指令{b}错误,请重新输入').format

        break

    else:

      print('账号密码错误三次,已关闭')

    二、深浅copy

    在使用程序编写过程中需要将值进行拷贝,更改其中一个变量,另一个变量值不能变化。这就需要深浅copy了。

    2.1、赋值

      二者分隔不开,a改b也跟着该,因为指向的就是同一个地址

      a=b

    2.2、浅copy列表

    a=[1,2,[3,4]]

    b=a.copy()

    print(id(a[0]),id(a[1]),id(a[2]))

    print(id(b[0]),id(b[1]),id(b[2]))

    a[0]=5

    a[1]=6

    a[2][0]=7

    a[2][1]=8

    print(id(a[0]),id(a[1]),id(a[2]))

    print(id(b[0]),id(b[1]),id(b[2]))

    如需所示:变化前和变化后的状态

    2.3、深copy列表

    a=[1,2,[3,4]]

    import copy 

    b=copy.deepcopy(a)

    print(id(a[0]),id(a[1]),id(a[2]))

    print(id(b[0]),id(b[1]),id(b[2]))

    a[0]=5

    a[1]=6

    a[2][0]=7

    a[2][1]=8

    print(id(a[0]),id(a[1]),id(a[2]))

    print(id(b[0]),id(b[1]),id(b[2]))

    如图所示:

  • 相关阅读:
    linux下解压命令详解
    SSL简介及工作原理
    在CentOS中安装gcc配置c语言开发环境(转)
    JTable表格(隐藏表头)(转)
    一个云平台开源项目Eucalyptus
    「CF645E」 Intellectual Inquiry
    「CERC2017」Donut Drone
    洛谷P3943 星空
    「CSPS 2019」格雷码
    洛谷P3941 入阵曲
  • 原文地址:https://www.cnblogs.com/jingpeng/p/12452298.html
Copyright © 2011-2022 走看看