Day02
课堂笔记
#列表类型 #1.insert() 插入 list1=['tank',18,'male',3.0,9,'广东'] list1.insert(2,'oldboy') print(list1) # 2.pop() #取出 # 3.remove() #移除 # 4.count() #查看值的个数 print(list1.count('tank')) # 5.index() #查看值的索引 print(list1.index('tank')) # 6.clear() #清空列表的值 list1.clear() print(list1) # 7.copy() #浅拷贝 #将list1的内存地址浅拷贝赋值给了list2 list2=list1.copy() print(list2,'添加值前') #将list1的原地址直接赋值给了list3 list3=list1 print(list3,'添加值后') #深拷贝 #将list1的值深拷贝赋值给list4 from copy import deepcopy list4=deepcopy(list1) #追加jason到list1中 list1.append('jason') print(list2,'添加值前') print(list3,'添加值后') #给list1中的可变列表进行追加值 list1[8].append('tank') #打印直接赋值,深,浅拷贝的结果 #浅拷贝:list1的列表中外层值改变对其不影响 #深拷贝:把list1中的所有值完全拷贝到一个新的地址中 #进而与list1完全隔离开 print(list2) print(list3) print(list4) # 8.extend()#合并 list1=[1,2,3] list2=[4,5,6] list1.extend(list2) print(list2) # 9.reverse()#反转 list1.reverse() print(list1) # 10.sort()#排序 list3=[1,3,5,8,10,2,4,6] #升序 # list3.sort() # print(list3) #降序 list3.sort(reverse=True) print(list3) #字典的内置方法(字典是无序类型) #1.按照key取、存值 dict1={'name':'饶涛','age':18,'sex':'famale','school':'安徽工程大学'} #根据key取饶涛的学校 print(dict1['school']) print(dict1['sal']) #get() #第一个参数是字典的key #第二个参数是默认值,若key存在则取key对应的值,否则取默认值 print(dict1.get('school','华南理工大学') print(dict1.get('sal','15000') #2.len print(len(dict1)) #3.成员运算in和not in print('name'in dict1)#true print('sal'in dict1)#false print('sal'not in dict1)#true #4.删除 del dict1["name"] print(dict1) #pop() #根据字典中的key取出对应的值赋值给变量name name=dict1.pop('name') print(dict1) print(name) #随机取出字典中的某个值 dict1.popitem() print(dict1) #5.key value items print(dict1.keys()) print(dict1.values()) print(dict1.items()) #6.循环 #循环所有的key for key in dict1: print(key) #7.update() print(dict1) dict2={"work":"student"} #把dict2加的dict1字典中 dict1.update(dict2) print(dict1) #元祖类型(在小括号内,以逗号隔开存放多个值) #注意:元祖和列表的区别,元祖是不可变类型,列表是可变类型 tuple1=(1,2,3,4,5,6) # print(tuple1) #优先掌握 #1.按索引取值 #print(tuple1[2]) #2.切片(顾头不顾尾) print(tuple1[0:6]) #(1,2,3,4,5,6) #步长 print(tuple1[0:6:2])#(1,3,5) #3.长度 print(len(tuple1))#6 #4.成员运算in 和not in print(1 in tuple1)#true print(1 not in tuple1)#false #5.循环 for line in tuple1: print(line) #集合类型(一般用于去重) #在{}用逗号隔开,可存放多个值,但集合会自带默认去重功能 set={1,2,3,4,2,1,3,4} print(set1) #集合是无序的 set1=set() ste2={} print(set1) print(set2) set2['name']='tank' print(type(set2))
文件操作
#文件读写基本操作 #对文本进行操作 #open(参数1:文件的名字,参数2:操作模式,参数3:指定字符) #f:称之为句柄 #r:避免转义符 #打开文件会产生两种资源,一种是python解释器与python文件的资源,程序结束python #另一种是 #写文件 f=open(r'D:\python\文件的名字.txt',mode="wt",encoding="utf-8") f.write('hello tank!') f.close() #读文件 f=open( r'D:\python\文件的名字.txt', 'r',#默认rt encoding="utf-8") res=f.read() print(res) f.close() # 文件追加模式 a f=open(r'D:\python\文件的名字.txt', 'a', #默认at模式 encoding="utf-8") f.write('\nhello jason') f.close()
文件处理之上下文处理
#文件处理之上下文管理;with #with会自带close()功能 #会在文件处理完以后自动调用close()关闭文件 #写文件 with open(r'file1.txt','w',encoding='utf-8')as f: f.write('life is sort,u need python!') #读文件 with open(r'file1.txt','r',encoding='utf-8')as f: res=f.read() print(res) #文件追加 with open(r'file1.txt','a',encoding='utf-8')as f: f.write('\n AAA')
结果:
图片处理
# 获取网页图片的地址,这里为图片的URL,后缀为.jpg #content返回的是bytes,二级制型的数据。图片、视频等都是二进制的数据 import requests res =requests.get('http://pic53.nipic.com/file/20141115/9448607_175255450000_2.jpg') # 写入图片 with open('da.jpg','wb') as f: f.write(res.content) # 读图片 with open('da.jpg','rb') as f: res=f.read() print(res) # 图片拷贝 with open('da.jpg','rb') as f,open('ta.jpg','rb') as w: res=f.read() w.write(res)
读写视频操作
#读写视频 with open('f:\\rt\qq文件\\tianyan_sys.mp4','rb')as f,open('tianyan_sys_copy.mp4','wb')as w: res=f.read() print(res) w.write(res) #一行一行读文件 with open('F:\\rt\QQ文件\\tianyan_sys.mp4','rb') as f,open('tianyan_sys_copy.mp4','wb') as w: #一次打开文件所有内容,若文件的大小超出内存的大小就会导致内存溢出 f.read() #一行一行读取文件内容,一行一行写入文件中,避免内存溢出 for line in f: w.write(line) #res=f.read() #print(res) #w.write(res)
函数
''' 1.什么是函数? 函数相当于工具,需要事先准备好,在需要时再使用 2.如何使用函数? 函数必须先定义,后调用 ''' # 3.函数的语法: # def cup(参数1,参数2...): # """ # 函数的声明 # 水杯,用来盛水和喝水 # """ # 函数体代码(逻辑代码) # return 返回值 ''' def:(全称defind)用来声明定义函数的关键字 函数名:看其名,知其意 ():括号,存放的是接收外界的参数 注释:用来说明函数的作用 函数体代码:逻辑代码 return:后面跟函数的返回值 ''' #注册功能 def register(): ''' 此函数注册功能 :return: ''' while True: #让用户输入用户名和密码 user=input('请输入用户名:').strip() pwd=input('请输入密码:').strip() re_pwd=input('请输入密码:').strip() #判断两次输入的密码是否一致 if pwd==re_pwd: #格式化字符串的三种方式 # user_info='用户名:%s,密码:%s' %(user,pwd) # user_info='用户名:{},密码:{}'.format(user,pwd) #字符串前写一个f相当于调用format方法 user_info=f'用户名:{user},密码:{pwd}' #把用户信息写入文件中 with open('user.txt','w',encoding='utf-8')as f: f.write(user_info) break else: print('两次密码不一致,请重新输入!') #调用函数: 函数名+括号 即调用函数 register() ''' 函数在定义阶段发生的事情 1.先打开python解释器 2.加载05 函数基础.py文件 3.python解释器会帮我们检测py文件中的语法,但是只会检测python语法,不会执行函数体代码 ''' #def foo(): #print('from foo!') #bar() #print( #调用阶段,会执行foo函数体代码 #foo()
结果
课后作业:
user1.txt
代码
def login(): i = 1 while i <= 3: user = input('请输入用户名:').strip() pwd = input('请输入密码:').strip() with open('D:\\python\\Day02\\user.txt', 'r', encoding='utf-8') as f: old_info = f.read().split(',') for index in range(len(old_info)): if old_info[index] == user: if old_info[index+1] == pwd: print("登录成功") i = 4 break else: print("用户名或密码错误") i += 1 break login()
登录成功
登录失败