本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理
本文章来自腾讯云 作者:背雷管的小青年
私信小编回复01可领取学习资料以及学习视频
一、实验目的与要求
1、掌握文件的打开和关闭。
2、掌握文件的不同操作,如读写、重命名、删除。
3、熟悉闭包、装饰器以及常见内置函数的使用。
二、实验原理
在python中,使用open方法打开文件,凡是打开的文件,切记要使用close方法关闭文件。向文件写数据,需要使用write方法来完成,在操作某个文件时,每调用一次write方法,写入的数据就会追加到文件末尾。读文件:方式1:使用read方法读取文件;方式2:使用readlines方法读取文件;方式3:使用readline方法一行一行读数据。文件的定位读写:方式1:使用tell方法来获取文件当前的读写位置;方式2:使用seek方法来获取文件当前的读写位置。os模块中的rename()方法可以完成文件的重命名;os模块中的remove()方法可以完成文件的删除操作。os模块的mkdir方法用来创建文件夹;os模块的getcwd方法用来获取当前的目录;os模块的chdir方法用来改变默认目录;os模块的listdir方法用于获取目录列表;os模块的rmdir方法用于删除文件夹。
Python函数是支持嵌套的。如果在一个内部函数中对外部函数作用域(非全局作用域)的变量进行引用,那么内部函数就会被称为闭包。闭包需要满足如下3个条件:(1)存在于两个嵌套关系的函数中,并且闭包是内部函数;(2)内部函数引用了外部函数的变量(自由变量);(3)外部函数会把内部函数的函数名称返回。
假设我们已经开发了一个本有的函数,后续可能会增加临时的需求,例如插入日志,我们可以增加一个包裹函数,由它来负责这些额外的需求,这个包裹函数就是装饰器。装饰器主要应用在如下场景:(1)引入日志;(2)函数执行时间统计;(3)执行函数前预备处理;(4)执行函数后清理功能;(5)权限校验;(6)缓存。装饰器是一个函数,它需要接收一个参数,该参数表示被修饰的函数。通过在函数定义的前面添加@符号和装饰器名,实现装饰器对函数的包装。多个装饰器应用在一个函数上,调用顺序是从下至上。如果给装饰器添加参数,需要增加一层包装,先传递参数,然后再传递函数名。
map函数会根据提供的函数对指定的序列做映射。map函数的作用是以参数序列中的每个元素分别调用function函数,把每次调用后返回的结果保存为对象;filter函数会对指定序列执行过滤操作;reduce函数会对参数序列中的元素进行累积。在Python 3中,reduce函数已经被从全局名字空间里面移除了,它现在被放置在fucntools模块中,使用时需要先引入。
三、预习与准备
1、提前预习Python文件操作以及高级函数的语法知识,实验之前编写好程序代码。
2、练习关于Python文件及文件夹的常见操作。
四、实验过程记载
实验题1分析程序运行结果:阅读下面的程序,分析代码是否能够编译通过。如果能编译通过,请列出运行的结果,否则请说明编译失败的原因。
在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述
实验题2
已知有个列表[1,2,3,4,5],让列表的每个元素加1,把结果不能被2整除的元素筛选出来。
源码:
sum=map(lambda x:x+1,[1,2,3,4,5])
result=filter(lambda x:x%2,list(sum))
print(list(result))
在这里插入图片描述
实验题3
打开一个英文的文本文件,将该文件中的每个英文字母加密后写入到一个新文件。加密的方法是:将A变成B,B变成C,……,Y变成Z,Z变成A;a变成b,b变成c,……,y变成z,z变成a,其他字符不变化。
源码:
file=open("key.txt","r")
content=file.readline()
list1=list(content)
file.close()
for i in range(0,len(list1)):
if list1[i].islower():
if list1[i]=='z':
list1[i]=chr(97)
continue
num=ord(list1[i])
list1[i]=chr(num+1)
if list1[i].isupper():
if list1[i]=='Z':
list1[i]=chr(65)
continue
num=ord(list1[i])
list1[i]=chr(num+1)
new_Str=''.join(list1)
print(new_Str)
file=open("new.txt","w+")
file.write(new_Str)
file.close()
在这里插入图片描述
实验题4
使用Python语言开发一个简单的学生管理系统。运用该学生管理系统编辑学生的信息,适时更新学生的资料。例如,新生入校,要在学生管理系统中录入刚入校的学生信息。请实现一个学生管理系统,要求如下。
- 使用自定义函数,完成对程序的模块化;
- 学生信息至少包含:姓名、性别及手机号;
- 该系统具有的功能:添加、删除、修改、显示、退出系统;
- 将学生信息存储到文件中。
源码:
import json
studentInfos = []
#打印菜单
def printMenu():
print("=" * 30)
print(" 学生管理系统")
print("1.添加学生信息")
print("2.删除学生信息")
print("3.修改学生信息")
print("4.显示所有学生信息")
print("0.退出系统")
print("=" * 30)
#添加学生信息
def addStudent():
newName = input("请输入新的学生名字:")
newSex = input("请输入新的学生性别(男/女):")
newPhone = input("请输入新的学生电话:")
newInfo = {}
newInfo["name"] = newName
newInfo["sex"] = newSex
newInfo["phone"] = newPhone
studentInfos.append(newInfo)
#删除学生信息
def delStudent(info):
delNum = int(input("请输入要删除的序号:")) - 1
del info[delNum]
#修改学生信息
def modifyStudent():
studentId = int(input("请输入要修改的序号:")) - 1
newName = input("请输入新的学生名字:")
newSex = input("请输入新的学生性别(男/女):")
newPhone = input("请输入新的学生电话:")
newInfo = {}
newInfo["name"] = newName
newInfo["sex"] = newSex
newInfo["phone"] = newPhone
studentInfos[studentId] = newInfo
#查看所有学生信息
def showStudent():
print("=" * 30)
print("学生信息如下")
print("=" * 30)
print("序号 姓名 性别 手机号")
num = 1
for tempInfo in studentInfos:
print(" %d %s %s %s"%(num,tempInfo["name"],tempInfo["sex"],tempInfo["phone"]))
num += 1
#main函数
def main():
while 1 == 1:
printMenu()
key = int(input("请输入操作的序号:"))
if key == 1:
addStudent()
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
网友评论