一丶深浅拷贝
浅copy:是把原列表第一层的内存地址不加区分完全copy一份给新列表
深copy:把原有列表分成多层,区分可变类型和不可变类型进行copy
只要记住一点:想让两个列表完全独立开,并且针对的是改操作的独立而不是读操作时用深copy
二丶循环
什么是循环:重复做某件事
为什么要有循环:为了让计算机重复做某件事
如何使用循环:
while循环的基本语法与基本使用
while 条件:
代码1
代码2
代码3
......
# while的运行步骤:
# 步骤1:如果条件为真,那么依次执行:代码1、代码2、代码3、......
# 步骤2:执行完毕后再次判断条件,如果条件为True则再次执行:代码1、代码2、代码3、......,如果条件为False,则循环终止
死循环与效率问题
死循环:条件为真,永远不会结束的循环
纯计算无io的死循环会导致致命的效率问题
结束循环的方式
方式1:将条件改为False,等到下次循环判断条件时才会生效
username = 'aaa' 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('登入失败') #循环嵌套和tag username = 'aaa' password = '123' while True: inp_name = input('请输入您的账号:') inp_pwd = input('请输入您的密码:') if inp_name == username and inp_pwd == password: print('登入成功') while True: cmd = input('输入命令:') if cmd == 'q': break print('命令{x}正在运行'.format(x=cmd)) break else: print('登入失败')
方式2:break,只要运行到break就会立即终止本层循环
username = 'aaa' password = '123' while True: inp_name = input('请输入您的账号:') inp_pwd = input('请输入您的密码:') if inp_name == username and inp_pwd == password: print('登入成功') break #立即终止本层循环 else: print('登入失败') #循环嵌套和break username = 'aaa' password = '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 else: print('命令{x}正在运行'.format(x=cmd)) else: print('登入失败')
方式3:continue,结束本次循环,直接进入下一次
count = 0 while count < 6: if count ==4: count+=1 continue print(count) count+=1
方式4:else,当while循环正常执行完并且中间没有被break 中止的话,就会执行else后面的语句,所以我们可以用else来验证,循环是否正常结束
扫描二维码关注公众号,回复:
9694513 查看本文章
username = 'aaa' password = '123' count = 0 while count<3: inp_name = input('请输入您的账号:') inp_pwd = input('请输入您的密码:') if inp_name == username and inp_pwd == password: print('登入成功') while tag: cmd = input('输入命令:') if cmd == 'q': break else: print('命令{x}正在运行'.format(x=cmd)) break else: print('账号密码错误') count+=1 else: print('输错3次,结束循环')
作业
#1. 使用while循环输出1 2 3 4 5 6 8 9 10 count = 1 while count <= 10: if count == 7: count+=1 continue else: print(count) count+=1
#2. 求1-100的所有数的和 count = 1 sum = 0 while count <= 100: sum+=count count+=1 print(sum)
#3. 输出 1-100 内的所有奇数 count = 1 while count <= 100: if count % 2 == 0: count+=1 else: print(count) count+=1
#4. 输出 1-100 内的所有偶数 count = 1 while count <= 100: if count % 2 == 0: print(count) count+=1 else: count+=1
#5. 求1-2+3-4+5 ... 99的所有数的和 count = 1 sum = 0 while count <= 99: if count % 2 == 1: sum = sum + count else: sum = sum - count count+=1 print(sum)
#6. 用户登陆(三次机会重试) username = 'aaa' password = '123' count = 0 while count<3: inp_name = input('请输入您的账号:') inp_pwd = input('请输入您的密码:') if inp_name == username and inp_pwd == password: print('登入成功') break else: print('账号密码错误') count+=1 else: print('输错3次,结束循环')
#7:猜年龄游戏 # 要求: # 允许用户最多尝试3次,3次都没猜对的话,就直接退出,如果猜对了,打印恭喜信息并退出 age = 18
count = 0 while count<3: inp_age = int(input('请输入年龄:')) if inp_age == age: print('恭喜猜对') break else: print('猜错了') count+=1 else: print('输错3次,结束游戏')
#8:猜年龄游戏升级版(选做题) # 要求: # 允许用户最多尝试3次 # 每尝试3次后,如果还没猜对,就问用户是否还想继续玩,如果回答Y或y, 就继续让其猜3次,以此往复,如果回答N或n,就退出程序 # 如何猜对了,就直接退出 age = 18 count = 0 while count<3: inp_age = int(input('请输入年龄:')) if inp_age == age: print('恭喜猜对') break else: print('猜错了') count+=1 if count == 3: tag = input('是否还想玩y/n:') if tag == 'y': count = 0 else: print('游戏结束') break