copy列表及流程控制之while循环

Posted nevmore

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了copy列表及流程控制之while循环相关的知识,希望对你有一定的参考价值。

一 如何copy列表

1、浅copy:是把原列表的第一层地址不加区分完全拷贝

拷贝原列表,产生新列表

技术图片

 

 

 1.2 浅copy的方法

list1 = [‘egon‘,‘lxx‘,[1,2]]

list2 = list1.copy()

2、深copy

想让两个列表完全独立开,并且针对改操作而不是读操作

 

 

 技术图片

 

 

 2.2 深copy的方法

list1 = [‘egon‘,‘lxx‘,[1,2]]

 

import copy

list2 = copy.deepcopy(list1)

 

区别:

浅copy是共用同一地址,深copy则是重新申请一个地址,改变其中一个的可变类型时,两者不会同时改变

二 流程控制之while 循环

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

while 条件:

  代码1

  代码2 

  代码3

print()

 技术图片

 

 

 如:

count = 0

while count < 5:

  print(count)

  count += 1

print(‘顶级代码‘)

 

2、死循环与效率问题

count = 0

while count < 5:

  print(count)

count = 0

while count < 5:

  print(count)

 

while True:

  name = input(‘yourr name‘)

  print(name)

以上都不会出现效率问题

while True:

  1+1

没有输出,后台一直运行

纯计算,没有IO的死循环会导致致命的效率问题

3、循环应用

username = ‘abc‘
pwd = ‘123‘

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

if username== inp_name and pwd == inp_pwd :
print(‘welcome‘)
else:
print(‘return back‘)

需求:输入错误的话,能够接着再输2次,没有while则需要再输入三遍相同的程序,很繁琐,而且却输对了还要再输两边。

需要重复代码,而且输对了不需再重复


username = ‘abc‘
pwd = ‘123‘

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

if username== inp_name and pwd == inp_pwd :
print(‘welcome‘)
else:
print(‘return back‘)

4、退出循环两种方式

4.1、条件改为False:等到下次循环判断条件时才会生效

username = ‘abc‘
pwd = ‘123‘
tag = True
while tag:
  tag = False

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

if username== inp_name and pwd == inp_pwd :
print(‘welcome‘)
     #tag = False(之后代码还会运行,下次循环判断条件时才生效)
else:
print(‘return back‘)

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

username = ‘abc‘
pwd = ‘123‘
while True:
inp_name = input(‘请输入您的账号:‘)
inp_pwd = input(‘请输入您的密码:‘)

if username== inp_name and pwd == inp_pwd :
print(‘welcome‘)
     break #终止本层循环
else:
print(‘return back‘)
print(‘====end====‘)

即如果if结果是True,则结尾不会打印====end====,如果是False,就会有

5、while循环嵌套

5.1 tag类型

tag = True

while tag:

  while tag:

    while tag:

       tag = False

 

username = ‘abc‘
pwd = ‘123‘
tag = True
while tag  :
inp_name = input(‘请输入您的账号:‘)
inp_pwd = input(‘请输入您的密码:‘)

if username== inp_name and pwd == inp_pwd :
print(‘welcome‘)
     while tag:
        cmd = input(‘输入命令:‘)
        if cmd == ‘q‘:
          tag = False
        else
          print(‘order {x} is loading‘.format(x = cmd))
    else:
print(‘return back‘)
print(‘====end====‘)

  

5.2 break:每一层必须配一个break

while True:

  while True:

    while True:

    break

  break

break

username = ‘abc‘
pwd = ‘123‘
while True:
inp_name = input(‘请输入您的账号:‘)
inp_pwd = input(‘请输入您的密码:‘)

if username== inp_name and pwd == inp_pwd :
print(‘welcome‘)
     while True:
        cmd = input(‘输入命令:‘)
          if cmd == ‘q‘:
        print(‘order {x} is loading‘.format(x = cmd))
        
          break

     break #终止本层循环
else:
print(‘return back‘)
print(‘====end====‘)

 

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

在continue之后添加同级代码毫无意义,因为永远无法运行

技术图片

 

 

count = 0

while count < 6:

  if count == 4:

    continue

  print(count)

  count +=1

7、while + else(针对break)

else包含的代码会在while循环结束后,并且在while喜欢实在没有被break打断的情况下正常结束的,才不会运行

while count < 6:

  if count == 4:

    break (后面程序都不运行)

    count += 1

    continue

  print(count)

  count+=1

else:

  print(‘...‘)

应用案例:


username = ‘abc‘
pwd = ‘123‘

count = 0
tag = True
while tag:
  if count == 3:
    break
inp_name = input(‘请输入您的账号:‘)
inp_pwd = input(‘请输入您的密码:‘)

if username== inp_name and pwd == inp_pwd :
print(‘welcome‘)
     while tag:
        cmd = input(‘输入命令:‘)
        if cmd == ‘q‘:
          tag = False
        else
          print(‘order {x} is loading‘.format(x = cmd))
    else:
print(‘return back‘)
    count += 1

 

 

以上是关于copy列表及流程控制之while循环的主要内容,如果未能解决你的问题,请参考以下文章

『Python基础』第6节:流程控制之while循环

Python学习————流程控制之for循环

流程控制之for循环

Python基础06

流程控制之for循环基本数据类型及其内置方法

流程控制之while循环