首页 / PYTHON / Python入门第二周day01
Python入门第二周day01
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python入门第二周day01,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5188字,纯文字阅读大概需要8分钟。
内容图文
![Python入门第二周day01](/upload/InfoBanner/zyjiaocheng/639/09a481ade1b844b7b3b614021d3677ff.jpg)
深浅copy
1、二者分隔不开,list1改list2也跟着该,因为指向的就是同一个地址
list1=['egon','lxx',[1,2]]
list2=list1 //赋值,不是copy
list1[0]='EGON'
print(list2)
输出结果如下:
2、copy
2.1、浅copy:是把原列表第一层的内存地址不加区分完全copy一份给新列表
list1=['egon','lxx',[1,2]]
list3=list1.copy()
print(list3)
print(id(list1))
print(id(list3))
print(id(list1[0]),id(list1[1]),id(list1[2]))
print(id(list3[0]),id(list3[1]),id(list3[2]))
这里可以看到给list3创建了一个新的容器,但新容器的第一层的内存地址和元list1的一样
如下图:
2.2、深copy
要想copy得到的新列表与原列表的改操作完全独立开必须有一种可以区分开可变类型与不可变类型
的copy机制,这就是深copy。
import copy //需要引用实现写好的copy函数
list1=['egon','lxx',[1,2]]
list3=copy.deepcopy(list1)
print(id(list1))
print(id(list3))
print(list3)
print(id(list1[0]),id(list1[1]),id(list1[2]))
print(id(list3[0]),id(list3[1]),id(list3[2]))
上图可以看出深度copy出来的list3,其中不可变类型的内存地址和list1的相同,可变类型(列表类型)
创建了一个新的容器,内存地址发生了改变,明显区分出了可变与不可变类型。
print(id(list1[2][0]),id(list1[2][1]))
print(id(list3[2][0]),id(list3[2][1]))
可以看出[1,2]中的不变类型的内存地址仍相同
list1[0]='EGON'
list1[1]='LXX'
list1[2][0]=111
list1[2][1]=222
print(list1)
print(list3)
但对list1进行更改后,并不会影响list3,表明深度copy将复制前后的对象区分开来,操作不会相互影响。
2、流程控制之while循环
2.1、循环的语法与基本使用
print(1)
while 条件:
代码1
代码2
代码3print(3)
2.2、死循环与效率问题
如下:
纯计算无io的死讯会导致致命的效率问题
while True:
1+1
while 1:
print('xxxx')
2.3、循环的应用
username = 'egon'
password = '123'
# 两个问题:
# 1、重复代码
# 2、输对了应该不用再重复
while True:
inp_name=input('请输入您的账号:')
inp_pwd=input('请输入您的密码:')
if inp_name == username and inp_pwd == password:
print('登录成功')
else:
print('账号名或密码错误')
2.4、退出循环的两种方式
方式一:将条件改为False,等到下次循环判断条件时才会生效
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就会立刻终止本层循环
while True:
inp_name=input('请输入您的账号:')
inp_pwd=input('请输入您的密码:')
if inp_name == username and inp_pwd == password:
print('登录成功')
break # 立刻终止本层循环
else:
print('账号名或密码错误')
2.5、while循环嵌套与结束
# 每一层都必须配一个break
while True:
while True:
while True:
break
break
break
# break的方式
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('账号名或密码错误')
改变条件的方式
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('账号名或密码错误')
2.6、while +continue:结束本次循环,直接进入下一次
强调:在continue之后添加同级代码毫无意义,因为永远无法运行
count=0
while count < 6:
if count == 4:
count+=1
continue
print(count)
count+=1
2.7、while +else:针对break
count=0
while count < 6:
if count == 4:
count+=1
continue
print(count)
count+=1
else:
print('else包含的代码会在while循环结束后,并且while循环是在没有被break打断的情况下正常结束的,才不会运行')
应用案列:
版本1:
count=0
tag=True
while tag:
if count == 3:
print('输错三次退出')
break
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('账号名或密码错误')
count+=1
版本2:优化
count = 0
while count < 3:
inp_name = input('请输入您的账号:')
inp_pwd = input('请输入您的密码:')
if inp_name == username and inp_pwd == password:
print('登录成功')
while True:
cmd = input("输入命令>: ")
if cmd == 'q': # 整个程序结束,退出所有while循环
break
else:
print('命令{x}正在运行'.format(x=cmd))
break
else:
print('账号名或密码错误')
count += 1
else:
print('输错3次,退出')
内容总结
以上是互联网集市为您收集整理的Python入门第二周day01全部内容,希望文章能够帮你解决Python入门第二周day01所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。