第二节python基础

https://mm.edrawsoft.cn/map.html?obj=qqE8C5C509A56306F473143828ACA29F4C/Personal/python%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B.emmx   

参考上方流程图

#数据量过大的情况我们就要使用字典进行存储数据

字典和list,列表的区别

1.字典取值速度快,因为字典的key都是不会重复的 ,而列表取值速度慢

2.列表是有序的,通过下标来取值,字典是无序的,通过key 和value来取值

3.列表的大小和内容可以随意改变

相同性质

字典和列表都可以包含任意的数据类型,即异构性

字典的操作方法

字典的定义方法:a={}

字典有两种增加方法 ,a['ces']=100  a.setdefault('cesss',2000)#有重复的不会进行改变

字典的修改方法

a['ces']=修改

#字典的取值
print(a['dong'])#不存在会报错
print(a.get('dong'))#不存在会返回一个none
print(a.get('dong','dssss'))#加一个字段,取不到的时候会返回这个字段

字典的删除
a.pop('xxx')#不存在值会报错
del a['xxxx'] 不存在也会报错
a.clear()#清空字典
a.keys()#打印key
a.values()#打印value
a.update(a=1,b=2)#字典的更新
如果字典做一个注册的功能,判断用户存在不存在的方法 直接用 if username in users.keys() 另外一种方法 username in users 这样也可以,直接判断一个元素在不在这里,判断的是这个key在不在
a={'dong':'30','cesss':200}
a=a.items()#这是一个二维数组,两个值所以可以拆包
for k,v in a:
print(k,v)#这种方法取出key和value
第二种方法循环字典取值
for k in a:
  print(k,a.get(k))
#字典小练习题目




字典嵌套list的增加和删除
info={'lgy':{
'age':18,
'ces':['ces']

},
'fd':{
'age':19
},
'money':500
}
#lgy买了一个车
#fd买了房,钱增加了
info['lgy']['ces'].append(18)#这是字典里的集合添加数据
info['lgy']['ces'].remove(18)#删除
info['money']+=4000
print(info)

#元祖
l=(1,2,3,4,5)
l=(1,)#一个元素要加一个逗号
#元祖一旦创建不可改变
for i in l:#可以循环
print(i)

a='abc'
print(a.count('a'))#统计个数
print(a.index('a'))#找下标找不到会报错
print(a.find('444545'))#找不到会返回-1,可以指定位置找
print(a.strip())#去掉前面后面空格,如果你输入,会去掉逗号
print(a.rstrip())#右边空格
print(a.ltrip())#去掉左边空格
print(a.replace('a','A'))
print(a.isupper())#大写 小写
print(a.islower())
print(a.zfill())#补零
print(a.isdigit())#是否纯数字
print(a.endswith())#判断以啥开头
# print(a.startswith())判断以啥结尾
print('欢迎登录'.center(50,'='))#字符串居中
print('my car'.title())#空格隔开的首字符大写
print(' '.isspace())
print('a'.capitalize())#收字符大写
print(a.split())#分割字符串很常用
#默认按空格分割 ,取一个字符串将他变成list 进行分割
深拷贝,浅拷贝
import copy
#浅拷贝拷贝地址 ,没有改变内存
#直接赋值就是浅拷贝,深拷贝地址不同让他们不互相影响
l=[1,2,3,4,5]
l2=copy.deepcopy(l)#深拷贝
l2=l.copy()#对于嵌套的内容就无法进行修改了
l2=l[:]#浅拷贝
print(id(l2))#查看地址
print(id(l))
l=l2#浅拷贝 ,赋值
print(id(l2))
简化代码,非空即真

user=input()
if user.strip():
print('输入不能为空')
else:
print('user不能为空')
d={'a':'1'}
if d.get('name'):#非空即真,非0即真
print('取到值了')
else:
print('xxx')

l=[]
if len(l)>1:
print()

#也可以 if l:
else:
print('无数据')

文件操作r模式
#原字符
# c=open(r'C:UsersAdministratorPycharmProjectsuntitled3day3a',)#要加r
# print(c.read())
#读模式
f=open('a','r',encoding='utf-8')#文件不存在会报错
result=f.read()#读出来。是字符串
f.seek(0)
results=f.readlines()#读文件每一行内容,放到list
f.seek(0)
resultsq=f.readline()#调一次读一行
print(resultsq)
print(result)
print(results)
f.close()#文件有打开也要关闭
#注意 r模式不存在会报错
#第二r模式不可以写
R+模式
f=open('a','r+',encoding='utf-8')#文件不存在会报错
f.write('sdsads')#写在最前面,可以写
f.seek(0)
print(f.read())
w模式 
f=open('a','w',encoding='utf-8')#文件不存在会报错
f.write('cesces')
name=['dong','sss']
f.writelines(name)#这种方法专门写列表的,自动循环把列表数据写进去,只能写字符串类型数据
#写数字方法
ss=[1,2,3,4,5,6]
for a in range(len(ss)):
ss[a] =str(ss[a])#将数字转换list
#换行写方法
names=' '.join(name)#字符串拼接,多个换行,或者循环加一个
#注意 w模式不会读
#第二文件不存在会报错
#写会把之前的内容覆盖
W+模式
f=open('a','w+',encoding='utf-8')#文件不存在会报错
#读不到因为已经清空了,w模式别用来读
f.write('sdsads')#这样不能读出来,因为文件指针在末尾
f.seek(0)
print(f.read())

A+模式
f=open('a','a+',encoding='utf-8')#文件不存在会报错
#追加模式写在最后
#能读能写,不请空原来的文件
f.write('sdsads')#这样不能读出来,因为文件指针在末尾
f.seek(0)
print(f.read())

文件的修改
f=open('a','a+',encoding='utf-8')#修改文件简单替换方法1
f.seek(0)
res=f.read()
new_res=res.upper()
f.seek(0)#要注意
#修改文件,逻辑清空以前的文件
f.truncate()#清空文件内容
f.flush()
f.write(new_res)
print(f.read())

非空既真
非0既真
# 注册的程序  账号和密码存在文件里
# 最多输入三次 输入账号和密码,确认密码
# 输入为空要提示
# 用户已经存在不能注册
# 两次密码输入要一致
#包含大小写字母,和数字
import string
f=open('Ces','a+',encoding='utf-8')
f.seek(0)
aaa=[]
for i in f.readlines():
i=i.strip()
aa=i.split(',')[0]
aaa.append(aa)
for i in range(3):
user=input('输入user').strip()
passw=input('输入密码').strip()
cps=input('确认密码').strip()
if not user or not passw or not cps:
print('不能输入为空')
elif passw!=cps:
print('两次输入密码要一致')
elif len(passw)<6 or len(passw)>12:
print('密码要6到12位之间')
else:
l,u,d=False,False,False
for p in passw:
if p.isdigit():
l=True
if p.islower():
u=True
if p.upper():
d=True
if not l or not u or not d:
print('密码必须包含大小写字母和数字')
elif user in aaa:
print('用户已经注册')
else:
f.write('%s,%s '%(user,passw))
print('注册成功')
break

else:
print('最多输入三次')
f.close()











原文地址:https://www.cnblogs.com/weilemeizi/p/13541574.html