目录
一、集合
set {数据,数据,...}
集合中的类型是不可变类型
集合是可变类型
集合是无序的 不支持下标
集合的数据不重复
my_set={1,2.3,4.56,'hell0',(34,547,)}
print(my_set)
# remove()
my_set.remove(1)
print(my_set)
# pop()
a=my_set.pop()
print(a)
print(my_set)
# add()
my_set.add(45)
print(my_set)
# clear()
my_set.clear()
print(my_set)
# 去重
my_list=[1,2,564,76,7,7,84,1]
print(my_list)
my_list=list(set(my_list))
print(my_list)
二、列表补充
1、列表排序中的key
# 数据类型保持一致
my_list=[1,3,5,7,9,45]
my_list.sort()
print(my_list)
list1=[{'name':'d','age':19},
{'name':'b.txt','age':16},
{'name':'a','age':16},
{'name':'c','age':20}]
# 列表中的数据为字典时,需指定排序规则
list1.sort(key=lambda x:x['name'])
print(list1)
list1.sort(key=lambda x:x['age'])
print(list1)
list1.sort(key=lambda x:(x['age'],x['name']))
print(list1)
list2=['a','b.txt','sfa','defgf','fhdk']
list2.sort()
print(list2)
list2.sort(key=lambda x:len(x))
print(list2)
2、列表推导式
# 快速生成列表、字典
# 1.txt、变量=[生成数据的规则 for 临时变量 in xxx]
my_list1=[i for i in range(5)]
my_list2=['hello' for i in range(5)]
my_list3=[f'num:{i}' for i in range(5)]
print(my_list1)
print(my_list2)
print(my_list3)
# 2、变量=[生成数据的规则 for 临时变量 in xxx if xxx]
# if 成立才生成
my_list4=[f'num:{i}' for i in range(9) if i%2==0]
print(my_list4)
# 3、变量=[生成数据的规则 for 临时变量 in xxx for j in xxx]
# 第二个for循环循环一次,生成一个数据
my_list5=[f'num:{i,j}' for i in range(3) for j in range(3)]
print(my_list5)
# 字典推导式
# 变量={生成字典的规则 for 临时变量 in xxx]
my_dict={f'name{i}':i for i in range(3)}
print(my_dict)
my_dict={f'name{i}{j}':j for i in range(3) for j in range(3)}
print(my_dict)
三、文件
1、基础知识
文件作用: 永久保持数据 文件在硬盘存储的格式是二进制 操作:打开-->读取-->操作 1.txt、 打开 将文件从硬盘中存到内存 open(file,moder='r',encoding='') file:文件名 moder:文件打开方式 r()read w(write) a(append)追加 encoding:编码方式 utf-8 gbk 2、 读写 read() 3、 关闭 close() 将内存中三大文件同步到硬盘 open函数打开文件,未指定编码方式时,windows默认gbk write函数写入,使用gbk
2、文件的三种方式
# r方式 文件不存在时,报错;
f=open('a.txt','r',encoding='utf-8')
buf=f.read()
print(buf)
f.close()
# w方式 文件不存在时,自动创建;文件存在会覆盖清空源文件
f=open('a.txt','w',encoding='utf-8')
f.write('hello world\n')
f.write('hello python\n')
f.write('你好')
f.close()
# a方式 文件末尾写入内容 文件不存在时,自动创建
f=open('a.txt','a',encoding='utf-8')
f.write('她她她\n')
f.write('他他他\n')
f.close()
3、文件的读操作
文件的读操作
buf=f.read(3) # 读三个字符
buf=f.read(3) # 再次读取时,如果有第二行,也会读取换行符\n
文件的读操作--按行读取
buf=f.readline() #读取一行 读取一次后,下次读取新内容
buf=f.readlines() #读取所有行 返回值为列表,一项为一个字符串
4、去除空白字符
f=open('a.txt','r',encoding='utf-8')
buf=f.readlines()
print(buf)
# 去除空白字符 列表推导
buf=[i.strip() for i in buf]
print(buf)
f.close()
5、读取大文件
# 有多行
f=open('a.txt','r',encoding='utf-8')
while True:
buf=f.readline()
if buf:
print(buf,end='')
else:
# 文件读完
break
f.close()
# 没有多行
f=open('b.txt', 'r', encoding='utf-8')
while True:
buf=f.read(5)
if buf:
print(buf,end='')
else:
# 文件读完
break
f.close()
6、存储概念
计算机中的大小 进制:二进制 八进制 十进制 十六进制 最小单位:bit(位) 字节:基本存储单位 byte 1byte=8 bit 1KB=1024 byte 1MB=1024KB 1GB=1024MB 1TB=1024GB 100Mbit 12.5MB/s 200Mbit 25MB/s
7、 文件分类
文本文件 txt py 能使用记事本打开的文件
文本文件可以使用文本、二进制文件打开
二进制文件只是使用二进制方式打开 rb vb ab
二进制文件 mp3 mp4 rmvb 等
f=open('c.txt','wb')
f.write('你好'.encode()) # 字符串转换为二进制
f.close()
f=open('c.txt','rb')
buf=f.read()
print(buf)
print(buf.decode())
f.close()
8、文件备份
1、用只读方式打开文件
2、读取
3、关闭
4、只写方式打开新文件
5、将第二部内容写入新文件
6、关闭新文件
file_name=input('请输入要备份的文件名')
f=open('file_name','rb')
buf=f.read()
f.close()
index=file_name.rfind('.')
new_filename=file_name[:index]+'[备份]'+file_name[index:]
f_w=open('new_filename','wb')
f_w.write(buf) # 字符串转换为二进制
f.close()
9、文件相关操作
import os
# 文件重命名
os.rename(源文件路径名,新文件路径名)
# 删除文件
os.remove(文件路径名)
# 创建文件夹
os.mkdir(目录路径名)
# 获取当前目录
os.getcwd()
# 改变默认目录
os.chdir('../')
# 获取目录列表
os.listdir('./')
# 删除文件夹
os.rmdir(目录名)
'''
'''
import os
# 批量创建文件名
def create_files():
os.chdir('test')
for i in range(8):
file_name='file_'+str(i)+'.txt'
f=open(file_name,'w')
f.close()
os.chdir('../')
# 批量修改文件名
def modify_filename():
os.chdir('test')
buf_list=os.listdir()
for file in buf_list:
new_file='ly'+file
os.rename(file,new_file)
os.chdir('../')
# 批量删除文件名局部
def re_filename():
os.chdir('test')
buf_list=os.listdir()
for file in buf_list:
num=len('ly')
new_file=file[num:]
os.rename(file,new_file)
os.chdir('../')
re_filename()
'''
四、文件相关训练
1、文件操作
题目1 [加强训练]
题干
使用文件操作,向movie.txt
文件中写入一下内容:
功夫,周星驰
一出好戏,黄渤
我不是药神,徐峥
训练目标
-
文件的写操作
训练提示
-
如何往一个文件里面写入数据
-
写入的数据换行使用什么方法
参考方案
-
打开文件
open()
,打开方式为"w"
-
写入文件
write()
-
换行使用
"\\n"
-
也可以使用
""" """
三个引号的形式,可以直接在代码里书写换行
操作步骤
-
打开文件,创建对象
-
写入信息
-
关闭文件
参考答案
-
第一种方式
# 因为编码格式的问题,我们为了防止出现乱码,需要在这里设置encoding="utf8"
f = open("movie.txt","w", encoding="utf8")
f.write("功夫,周星驰\\n一出好戏,黄渤\\n我不是药神,徐峥")
f.close()
-
第二种方式
f = open("movie.txt","w",encoding="utf8")
f.write("""功夫,周星驰
一出好戏,黄渤
我不是药神,徐峥""")
f.close()
题目2 [加强训练]
题干
将第一题创建好的文件打开,并读取内容, 要求如下:
-
一次全部读取
-
每次读取一行
训练目标
-
文件的读操作
训练提示
-
如何读取文件内容?
-
读取全部内容的方法?
-
每次读取一行的方法?
参考方案
-
打开文件open,打开方式为“r”
-
读取文件read()
-
读取一行readline()
-
读取所有行readlines()
操作步骤
-
打开文件(使用r方式打开,如果不写那么默认是只读方式打开)
-
读取信息
-
关闭文件(每次操作完文件后要关闭文件)
参考答案
-
第一种方式
# 注意编码格式问题 f = open("movie.txt",'r',encoding="utf8") content = f.read() f.close() print(content)
-
第二种方式
f = open("movie.txt",'r',encoding="utf8") content = f.readlines() f.close() # 读取后的内容是一个列表,注意列表中的数据中有一个"\\n"。如果使用需要处理 print(content)
-
第三种方式
f = open("movie.txt",'r',encoding="utf8") # 因为readline 每次读取一行,需要我们使用循环读取 while True: content = f.readline() # 当我们读取的内容是空字符的时候跳出循环 if content == "": # if content: break print(content) f.close()
题目3 [加强训练]
题干
-
使用os模块创建一个名为“黑马”的文件夹
-
获取黑马文件夹当前所在目录
-
获取当前的目录列表
-
改变文件的操作路径
-
将黑马文件夹删除
训练目标
-
os模块的使用
训练提示
os模块基础命令的使用
参考方案
创建文件mkdir
当前所在目录getcwd
当前的目录列表listdir
改变文件的操作路径chdir
删除文件夹rmdir
操作步骤
参考答案
import os
# 01
os.mkdir("黑马")
# 02
os.getcwd()
# 03
os.listdir("../../../../../Desktop/")
# 04
os.chdir("../../../../../")
# 05
os.rmdir("黑马")
题目4 [综合训练1]
题干
编写一段代码以完成两份文件之间的相互备份
-
提示用户输入文件名。例:gailun.txt
-
创建以用户输入的名字的文件
-
打开文件写入如下信息
功夫,周星驰
一出好戏,黄渤
我不是药神,徐峥
-
将输入的数据输出到终端上
-
在文件夹中创建gailun副本.txt文件
-
将gailun.txt文件中的数据写入gailun副本.txt文件中
-
打开文件,查看文件中内容
训练目标
-
文件的综合使用
训练提示
-
每次操作完文件需要关闭
-
在windows系统中注意编码格式问题
-
需要自己重新定义一个新的文件名
参考方案
操作步骤
-
操作步骤一
-
提示用户输入文件名
-
打开文件
-
写入信息
-
关闭文件
-
打开文件
-
读取文件中的信息
-
-
操作步骤二
-
提取文件名的后缀
-
组建新的文件名
-
-
操作步骤三
-
打开新组建的文件名字的文件
-
写入文步骤一中读取到的信息写入到新的文件中
-
关闭文件
-
-
操作步骤四
-
打开新的文件
-
读取文件中的内容
-
关闭文件
-
参考答案
# 提示输入文件
oldFileName = input("请输入要创建的文件名:")
# 以写的方式打开文件
oldFile = open(oldFileName, 'w', encoding="utf8")
oldFile.write("功夫,周星驰\\n一出好戏,黄渤\\n我不是药神,徐峥")
oldFile.close()
# 打开文件
f = open(oldFileName, 'r', encoding="utf8")
#读取文件内容
context = f.readlines()
print(context)
f.close()
# 提取文件名的后缀
fileFlagNum = oldFileName.rfind('.')
# 确定文件名中有没有后缀, rfind() 找到内容返回正数下标,没有找到,返回-1
if fileFlagNum > 0:
fileFlag = oldFileName[fileFlagNum:]
# 组织新的文件名字
newFileName = oldFileName[:fileFlagNum] + '复本' + fileFlag
# 创建新的文件副本
newFile = open(newFileName, 'w',encoding="utf8")
for lineContent in context:
print(lineContent)
newFile.write(lineContent)
newFile.close()
# 打开写入的新文件
f = open(newFileName, "r", encoding="utf8")
# 读取内容
context = f.read()
# 输入到终端
print(context)
# 关闭文件
f.close()
题目5 [综合训练2]
题干
-
创建一个新项目中新创建一个名字py文件夹
-
进入py文件夹中创建5个文件,文件名分别为python基础班-1.txt,python基础班-2.txt,python基础班-3.txt,python基础班-4.txt,python基础班-5.txt
-
然后将py文件夹中的所有文件都改名为[黑马]python基础班-1.txt,[黑马]python基础班-2.txt,[黑马]python基础班-3.txt,[黑马]python基础班-4.txt,[黑马]python基础班-5.txt
训练目标
-
os模块的综合使用
训练提示
-
首先创建文件夹,创建文件
-
然后,获取当前文件夹下所有文件
-
最后进行重命名
参考方案
-
创建文件夹mkdir
-
进入文件夹中chdir
-
获取文件夹中所有的文件listdir
-
重命名rename
操作步骤
-
第一部分
-
创建文件夹
-
进入文件夹中
-
循环遍历创建五个文件,每创建一个后关闭文件
-
-
第二部分
-
获取文件夹中所有的文件
-
遍历获取后的文件,并修改文件名称
-
参考答案
# 第一部分
import os
# 创建文件夹
os.mkdir("py")
# 进入py文件夹中
os.chdir("py")
# 创建5个文件
for i in range(1, 6):
f = open("python基础班-%d.txt" % i, "w")
f.close()
# 第二部分
# 进入py文件夹中,由于上边代码中已经进入到“py”文件夹里面,这里就不用再次进入了
# os.chdir("py")
# 获取py文件夹中所有的文件
filename_list = os.listdir()
# 遍历文件
for file_name in filename_list:
# 进行修改
new_file_name = "[黑马]" + file_name
os.rename(file_name, new_file_name)
2、文件
题目[加强训练]
题干
使用递归求 1-100 累加和
训练目标
-
递归的使用
训练提示
-
递归的特点是什么?
-
如何求一个数的累加和?
参考方案
-
递归函数的特点:①函数自己调用自己 ②函数有结束条件
-
求 num 的累加和,只需要让 num-1 的累加和加上 num 即可。
操作步骤
-
书写结束条件
-
书写递归调用
参考答案
def sum_num(num):
# 如果是1, 直接返回1
if num == 1:
return 1
# 如果不是1, 重复执行累加
return num + sum_num(num - 1)
result = sum_num(100)
print(result)
题目[加强训练]
题干
编程实现向文件a.txt中书写好好学习,天天向上
的内容。
训练目标
-
文件操作练习
训练提示
-
python 中如何操作文件?
-
如何向文件中书写内容?
参考方案
-
打开文件使用 open 函数
-
向文中书写内容使用 write 函数
-
关闭文件用 close 函数
操作步骤
-
打开文件
-
向文件中写入内容
-
关闭文件
参考答案
# 1. 打开文件
f = open("test/a.txt", 'w', encoding="utf-8")
# 2. 向文件中写入内容
f.write("好好学习,天天向上")
# 3. 关闭文件
f.close()