版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Ch06输入输出和文件本章要点:6.1输入和输出概述6.2命令行参数6.3标准输入和标准输出函数6.4文件和文件对象6.5文本文件的读取和写入6.6二进制文件的读取和写入6.7随机文件的读取和写入6.8CSV格式文件的读取和写入6.9对象序列化6.10os模块和文件目录操作6.11标准输入、输出和错误流6.12重定向和管道6.13综合应用:文件数据的统计和分析资源下载提示2课件等资源:扫描封底的“课件下载”二维码,在公众号“书圈”中下载。素材(源码):扫描本书目录上方的二维码下载。讲解视频:扫描封底刮刮卡中的二维码,再扫描书中相应章节中(位于每章最前)的二维码,作为开源的补充阅读和学习资源。
案例研究:扫描封底刮刮卡中的二维码,再扫描书中相应章节中(位于每章最后)的二维码,可以在线学习。每章练习题:扫描封底刮刮卡中的二维码,再扫描每章习题部分的二维码,下载本章练习题电子版。
题库平台:教师登录网站(),联系客服开通教师权限输入和输出概述Python程序通常可以使用下列方式之一实现交互功能:(1)命令行参数。(2)标准输入和输出函数。(3)文件输入和输出。(4)图形化用户界面命令行参数通过列表sys.argv访问命令行参数argv[0]为Python脚本名,argv[1]为第1个参数,argv[2]为第2个参数【例6.1】命令行参数示例(randomseq.py):生成n个随机数,其中,n由程序的第一个命令行参数所确定importsys,randomn=int(sys.argv[1])foriinrange(n):print(random.randrange(0,100))argparse模块和命令行参数解析argparse模块是用于解析命名的命令行参数,生成帮助信息的python标准模块使用argparse模块的基本步骤(1)导入模块>>>importargparse(2)创建ArgumentParser对象>>>parser=argparse.ArgumentParser()(3)调用parser对象方法add_argument(),增加要解析的命令参数信息>>>parser.add_argument('--length',default=10,type=int,help='长度')(4)调用parser对象方法parse_args()解析命令行参数,生成对应的列表>>>args=parser.parse_args()>>>args#输出:Namespace(length=10)【例6.2】命令行参数解析示例解析命令行参数所输入的长和宽的值,计算并输出长方形的面积importargparse #导入模块parser=argparse.ArgumentParser() #创建ArgumentParser对象parser.add_argument('--length',default=10,type=int,help='长度') #长方形的长,默认为10parser.add_argument('--width',default=5,type=int,help='宽度') #长方形的宽,默认为5#调用parser对象方法parse_args()解析命令行参数,生成对应的列表args=parser.parse_args()area=args.length*args.width #计算长方形的面积print('面积=',area) #输出长方形的面积标准输入和标准输出函数input函数的格式print函数的格式print函数用于打印一行内容,即将多个以分隔符(sep,默认为空格)分隔的值(value,...,以逗号分隔的值),写入到指定文件流(file,默认为控制台sys.stdout)。参数end指定换行符;flush指定是否强制写入到流【例6.3】输入函数和输出函数示例1(io_test1.py)
>>>print(1,2,3)#输出时采用默认分隔符(空格)。输出:123123>>>print(1,2,3,sep=',')#输出时采用逗号(,)分隔符。输出:1,2,3123>>>print(1,2,3,sep=',',end='.\n')#输出时采用逗号分隔符,最后以点结束并换行1,2,3.>>>foriinrange(5):#输出时使用空格代替换行符
print(i,end='')01234【例6.4】输入函数和输出函数示例2(io_test2.py)importdatetimesName=input("请输入您的姓名:")#输入姓名birthyear=int(input("请输入您的出生年份:"))#输入出生年份age=datetime.date.today().year-birthyear#根据当前年份和出生年份计算年龄print("您好!{0}。您{1}岁。".format(sName,age))【例6.5】从控制台读取n个整数并计算其累计和(io_sum.py)n由程序的第一个命令行参数所确定importsysn=int(sys.argv[1])#命令行第一个参数确认所需求和的整数个数nsum=0#设置求和初始值=0foriinrange(n):number=int(input('请输入整数:'))#输入整数sum+=number#整数累加print('累计和为:',sum)#输出n个整数累计和交互式用户输入【例6.6】编写程序(stat.py),输入批量数据(假定当输入-1时,终止输入),统计所输入的数据个数,并求总和以及平均值a=[]#初始化列表x=float(input("请输入一个实数,输入-1终止:"))whilex!=-1:a.append(x)#将所输入的实数添加到列表中x=float(input("请输入一个实数,输入-1终止:"))print("计数:",len(a))#列表长度即为实数个数print("求和:",sum(a))#列表中各元素求和print("平均值:",sum(a)/len(a))#列表中各元素求平均值运行时提示输入密码【例6.7】运行时提示输入密码(getpass1.py)importgetpassusername=input("用户名:")#提示输入用户名passwd=getpass.getpass("密码:")#提示输入密码ifusername=='jianghong'andpasswd=='password':#实际运用中,需要与数据库中的账户信息比较print('登录成功')else:print('登录失败')文件和文件对象文件对象和open函数在使用open()函数时可以指定打开文件的模式文件的打开、写入、读取和关闭通过内置函数open可创建或打开文件对象通过文件对象的实例方法write/writelines,可以写入字符串到文本文件通过文件对象的实例方法read/readline,可以读取文本文件的内容文件读写完成后,应该使用close方法关闭文件【例6.8】读取并输出文本文件(type_file.py)
importsys #导入模块filename=sys.argv[0] #所读取并输出的即本程序文件f=open(filename,'r',encoding='utf8')#打开文件(读取模式,指定编码)line_no=0 #统计行号whileTrue:line_no+=1 #行号计数
line=f.readline() #读取行信息
ifline:print(line_no,":",line) #输出行号和该行内容
else:breakf.close() #关闭打开的文件with语句和上下文管理协议实现上下文管理协议的对象文件对象支持使用with语句,确保打开的文件自动关闭【例6.9】利用with语句读取并输出文本文件(type_file_with.py)importsysfilename=sys.argv[0]#所读取并输出的就是本程序文件type_file_with.pyline_no=0#统计行号withopen(filename,'r',encoding='utf8')asf:#使用with语句实现上下文管理协议forlineinf:
line_no+=1#行号计数print(line_no,":",line)#输出行号和该行内容文本文件的写入打开文件、写入数据和关闭文件1.创建或打开文件对象通过内置函数open()可以创建或打开文件对象,可以指定覆盖模式(文件存在时)、编码和缓存大小2.写入字符串到文本文件打开文件后,可以使用其实例方法write()/writelines(),写入字符串到文本文件。可以使用实例方法flush强制把缓冲的数据更新到文件中f.write(s)#把字符串s写入到文件ff.writelines(lines)#依次把列表lines中的各字符串写入到文件ff.flush()#把缓冲的数据更新到文件中3.关闭文件写入文件完成后,应该使用close方法关闭流,以释放资源,并把缓冲的数据更新到文件中f.close()#关闭文件【例6.10】文本文件的写入示例withopen(r'c:\pythonpa\data1.txt','w')asf:f.write('123\n')#写入字符串f.write('abc\n')#写入字符串f.writelines(['456\n','def\n'])#写入字符串文本文件的读取打开文件、读取数据和关闭文件1.打开文件对象通过内置函数open()可以打开文件对象。可以指定编码和缓存大小。例如:f1=open('data1.txt','r')#打开data1.txt,若文件不存在,则导致FileNotFoundError2.从打开的文本文件中读取字符数据打开文件后,可以使用下列实例方法读取字符数据。f.read():从f中读取剩余内容直至文件结尾,返回一个字符串。f.read(n):从f中读取至多n个字符,返回一个字符串;如果n为负数或None,读取直至文件结尾。f.readline():从f中读取1行内容,返回一个字符串。f.readlines():从f中读取剩余多行内容,返回一个列表。3.关闭文件可以使用close方法关闭流,以释放资源。通常采用with语句,以保证系统自动关闭打开的流【例6.11】文本文件的读取示例withopen(r'c:\pythonpa\data1.txt','r')asf:forsinf.readlines():print(s,end='')二进制文件的读取和写入使用open()函数打开或创建一个文件时,可以指定打开模式为'b',以打开二进制文件1.创建或打开文件对象通过内置函数open(),指定打开模式'b',可以创建或打开二进制文件对象。可以指定覆盖模式(文件存在时)和缓存大小。例如:f1=open('data1.dat','wb')#创建或打开data1.dat2.写入字节数据到二进制文件打开文件后,可以使用其实例方法write,写入字节数据(bytes或bytearray)到二进制文件。可使用实例方法flush强制把缓冲的数据更新到文件中。相关命令如下:f.write(b)#将字节数据b写入到二进制文件f,返回实际写入的字节数f.flush()#将缓冲的数据更新到文件中3.关闭文件可以使用close方法关闭流,以释放资源。通常采用with语句,以保证系统自动关闭打开的流二进制文件的读取和写入示例【例6.12】二进制文件的写入【例6.13】二进制文件的读取withopen(r'c:\pythonpa\data1.dat','wb')asf:f.write(b'123')#写入字节数据f.write(b'abc')#写入字节数据withopen(r'c:\pythonpa\data1.dat','rb')asf:b=f.read()print(b)随机文件访问创建或打开随机文件使用内置函数open(),指定打开模式'+‘定位使用其实例方法seek进行定位写入/读取数据使用其实例方法write/read关闭文件使用close方法关闭流,以释放资源【例6.14】随机文件的读写示例importosf=open('data.dat','w+b')#创建或打开文件data.datf.seek(0)#定位到开始位置f.write(b'Hello')#写入字节数据f.write(b'World')#写入字节数据f.seek(-5,os.SEEK_END)#定位到结束位置倒数第5个位置b=f.read(5)#读取5个字节print(b)#输出:b'World'CSV文件格式的读取和写入(1)逗号分隔符文本格式csv.reader对象和csv文件的读取。本节基于以下scores.csv文件,其内容为:【例6.15】使用reader对象读取csv文件importcsvdefreadcsv1(csvfilepath):withopen(csvfilepath,newline='')asf:#打开文件f_csv=csv.reader(f)#创建csv.reader对象headers=next(f_csv)#标题print(headers)#打印标题(列表)forrowinf_csv:#循环打印各行(列表)print(row)if__name__=='__main__':readcsv1(r'scores.csv')学号,姓名,性别,班级,语文,数学,英语101511,宋颐园,男,一班,72,85,82101513,王二丫,女,一班,75,82,51101531,董再永,男,三班,55,74,79101521,陈香燕,女,二班,80,86,68101535,周一萍,女,三班,72,76,72CSV文件格式的读取和写入(2)csv.writer对象和csv文件的写入【例6.16】使用writer对象写入csv文件importcsvdefwritecsv1(csvfilepath):headers=['学号','姓名','性别','班级','语文','数学','英语']rows=[('101511','宋颐园','男','一班','72','85','82'),('101513','王二丫','女','一班','75','82','51')]withopen(csvfilepath,'w',newline='')asf:#打开文件f_csv=csv.writer(f)#创建csv.writer对象f_csv.writerow(headers)#写入1行(标题)f_csv.writerows(rows)#写入多行(数据)if__name__=='__main__':writecsv1(r'scores1.csv')对象系列化也称为串行化,将对象转换为数据形式,并转储到磁盘文件或通过网络实现跨平台传输反系列化:从磁盘数据文件或接收到的数据形式,恢复以得到相应对象的过程使用pickle/cPickle模块中提供的函数,可以实现Python对象的系列化【例6.17】对象系列化importpicklewithopen(r'c:\pythonpa\dataObj1.dat','wb')asf:s1='Hello!'c1=1+2jt1=(1,2,3)d1=dict(name='Mary',age=19)pickle.dump(s1,f)pickle.dump(c1,f)pickle.dump(t1,f)pickle.dump(d1,f)【例6.18】对象反系列化importpicklewithopen(r'c:\pythonpa\dataObj1.dat','rb')asf:o1=pickle.load(f)o2=pickle.load(f)o3=pickle.load(f)o4=pickle.load(f)print(type(o1),str(o1))print(type(o2),str(o2))print(type(o3),str(o3))print(type(o4),str(o4))json模块和JSON格式数据(1)json模块类似于pickle模块,也可实现对象序列化,并可实现与其它语言编写的程序实现数据交换JSON(JavaScriptObjectNotation,JavaScript对象标记)定义了一种标准格式,用字符串来描述典型的内置对象(如字典、列表、数字和字符串)。虽然JSON原来是JavaScript编程语言的一个子集,但它现在是一个独立于语言的数据格式,所有主流编程语言都有生产和消费的JSON数据的库JSON是网络数据交换的流行格式之一Python标准库模块json包含将Python对象编码为JSON格式(简称JSON)和将JSON解码到Python对象的函数:dumps(obj):返回把obj对象序列化为JSON字符串。dump(obj,fp):把obj对象序列化为JSON字符串写入到文件fp。loads(s):返回把JSON字符串s反序列化后的对象。load(fp):返回把从文件fp中读取JSON字符串反序列化后的对象。>>>importjson>>>data=[{'a':'A','b':(2,4),'c':3.0}]>>>str_json=json.dumps(data)>>>str_json
#输出:'[{"a":"A","c":3.0,"b":[2,4]}]'>>>data1=json.loads(str_json)>>>data1#输出:[{'a':'A','c':3.0,'b':[2,4]}]【例6.19】对象JSON格式系列化示例(json_dump.py)importjsonurls={'baidu':'/','sina':'/','tencent':'/','taobao':'/'}withopen(r'c:\pythonpa\data.json','w')asf:json.dump(urls,f)【例6.20】对象JSON格式反系列化示例(json_load.py)importjsonwithopen(r'c:\pythonpa\data.json','r')asf:urls=json.load(f)print(urls)json模块和JSON格式数据(2)os模块和文件目录操作使用标准库中的os模块,用户可以实现操作系统的目录处理,例如创建目录、删除目录等操作os模块主要包括getcwd()(获取当前工作目录)、chdir()(切换当前工作目录)、mkdir()(创建单级目录)、makedirs()(创建多级目录)、listdir()(显示目录中的文件/子目录列表)、rmdir()(删除目录)、remove()(删除文件)和rename()(文件或目录重命名)等函数【例6.21】文件目录操作示例>>>importos #导入模块>>>os.getcwd() #显示当前目录>>>os.chdir(r"c:\pythonpa") #切换当前目录>>>os.listdir(r"c:\pythonpa") #列举当前目录中的内容标准输入、输出和错误流使用sys模块的sys.stdin、sys.stdout和sys.stderr,可以查看对应的标准输入、标准输出和标准错误流文件对象【例6.22】标准输出流示例>>>importsys>>>print("Anerrormessage",file=sys.stdout)#输出:Anerrormessage>>>sys.stdout.write("Anothererrormessage\n")Anothererrormessage22读取任意长度的输入流【例6.23】计算输入流中数值的平均值(average.py)importsystotal=0.0count=0forlineinsys.stdin:count+=1total+=float(line)avg=total/countprint("平均值为:",avg)标准输入、输出和错误流重定向【例6.24】标准输出流重定向示例(poweroftwo.py)。从命令行第一个参数中获取n的值,然后将0~n以及2的0~n次幂的列表打印输出到out.log文件中importsysn=int(sys.argv[1])#从命令行第一个参数中获取n的值power=1#2的0~n次幂赋初值i=0#计数赋初值f=open('out.log','w')#指定标准输出重定向到文件out.log中sys.stdout=fwhilei<=n:print(str(i),'',str(power))#输出0~n以及2的0~n次幂的列表power=2*power#计算2的0~n次幂i=i+1#计数加1sys.stdout=sys.__stdout__print('done!')重定向和管道实现标准输入和标准输出的抽象,并通过操作系统为标准输入或标准输出指定不同的源重定向标准输出到一个文件【例6.25】重新定向标准输出到一个文件命令行命令:pythonrandomseq.py10>scores.txt命令行命令:typescores.txt重定向文件到标准输入输入重定向的语法格式【例6.26】重新定向文件到标准输入命令行命令:pythonaverage.py<scores.txt重定向文件到标准输入的示意图管道将一个程序的标准输出与另一个程序的标准输入相连,这种机制称之为管道。例如:管道执行的示意图c:\pythonpa\ch06>pythonrandomseq.py1000|pythonaverage.py
其执行结果等同于下列两行执行命令:c:\pythonpa\ch06>pythonrandomseq.py1000>scores.txtc:\pythonpa\ch06>pythonaverage.py<scores.txt过滤器过滤器通过某种形式将标准输入流转换为标准输出流【例6.27】过滤器示例1:使用操作系统实用程序more逐屏显示数据命令行命令:pythonrandomseq.py1000|more过滤器示例(1)【例6.28】过滤器示例2:使用操作系统实用程序sort排序输出数据命令行命令:pythonrandomseq.py5|sort过滤器示例(2)【例6.29】过滤器示例3:使用操作系统实用程序sort和more排序并逐屏输出数据命令行命令:pythonrandomseq.py1000|sort|more过滤器示例(3)【例6.30】过滤器示例4(rangefilter.py):将来自于标准输入中位于指定范围的值写入到标准输出importsyslo=int(sys.argv[1])hi=int(sys.argv[2])forlineinsys.stdin:value=int(line)if(value>=lo)and(value<=hi):print(str(value))综合应用:【例6.31】统计储存在文本文件中的学生成绩信息(process_txt.py)scores=[] #创建列表存储成绩信息txtfilepath='data.txt' #指定源数据文件(原始成绩信息)withopen(txtfilepath,encoding='utf-8')asf: #打开文件
forsinf.readlines(): #读取并遍历文件行
scores.append(int(s)) #数据转换为整数后添加到成绩列表result_filepath='result.txt' #指定结果数据文件(成绩统计信息)withopen(result_filepath,'w',encoding='utf-8')asf: #打开文件(写入模式,指定编码)
f.write("成绩个数:{}\n".format(len(scores)))f.write("最高分:{}\n".format(max(scores)))f.write("最低分:{}\n".format(min(scores)))f.write("平均分:{}\n".format(sum(scores)/len(scores)))读取data.txt中的数据(假设文件中存储若干成绩,每行一个成绩),统计分析成绩的个数、最高分、最低分以及平均分,并把结果写入到result.txt文件中综合应用:【例6.32】统计储存在文本文件中的天气温度信息(process_temp.py)txtfilepath='temperatures12.txt' #指定数据文件(原始温度信息)withopen(txtfilepath,encoding='utf-8')asf: #打开文件(文本读取模式)
ts=f.readlines() #读取气温文件中所有内容
temp_high=[int(t1)fort1ints[0].strip().split(",")] #最高温度列表
temp_low=[int(t1)fort1ints[1].strip().split(",")] #最低温度列表
ht=max(temp_high) #最高温度
ht_loc=temp_high.index(ht)+1 #最高温度所在日期
lt=min(temp_low) #最低温度
lt_loc=temp_low.index(lt)+1 #最低温度所在日期
print(f"12月{ht_loc}号最热,最高温度为{ht}")print(f"12月{lt_loc}号最冷,最低温度为{lt}")#构建日平均气温列表
temp_average=[(temp_high[i]+temp_low[i])/2foriinrange(len(temp_high))]#构建日平均气温低于10度的列表(低于10度则值为1,否则值为0)
t10=[int(t<10)fortintemp_average]#(针对1和0列表)统计连续5天日平均气温低于10度的汇总值
t10_m=[t10[i]+t10[i+1]+t10[i+2]+t10[i+3]+t10[i+4]foriinrange(len(t10)-4)]#第一个连续5天日平均气温低于10度的汇总值(就是5)
t10_5=max(t10_m)#第一个连续5天日平均气温低于10度的汇总值所在的日期
t10_5_loc=t10_m.index(t10_5)+1print(f"上海12月{t10_5_loc}日入冬,为冬季首日")找出12月份第几天最热(按最高气温计算)?最高多少度?12月份第几天最冷(按最低气温计算)?最冷多少度?计算出12月份的平均气温(这个月每天最高气温和最低气温的平均值,取整数)。假设在气象意义上,入冬标准是连续5天日平均气温低于10℃,则为入冬,其首日为冬季首日。根据12月份的气象数据,判断上海在哪一天入冬(为冬季首日)综合应用:【例6.33】统计储存在CSV文件中的学生成绩信息(read_csv.py)importcsv #导入模块scores=[] #创建列表存储从csv文件中读取的成绩信息csvfilepath='data.csv' #指定数据文件(原始成绩信息)withopen(csvfilepath,newline='')asf: #打开文件(文本读取模式)
f_csv=csv.reader(f) #创建csv.reader对象
headers=next(f_csv) #标题信息
forrowinf_csv: #循环打印各行内容
scores.append(row)print("原始记录:",scores)scoresData=[] #创建列表存储成绩的统计信息forrecinscores: #循环遍历成绩记录列表(学号姓名成绩)
scoresData.append(int(rec[2])) #形成学生成绩的列表print("成绩列表:",scoresData) #输出学生成绩列表print("平均成绩:",sum(scoresData)/len(scoresData)) #输出平均成绩假设data.csv文件中存放若干学生的学号(ID)、姓名(name)和成绩(score)信息,编写程序读取data.csv中的信息,获取学生的成绩信息,并统计分析学生成绩的平均值综合应用:【例6.34】基于字典的通信录(addressbook.py)(1)"""简易通信录程序"""importos,jsonab={}#通信录保存在字典中name:tel#从JSON文件中读取通信录ifos.path.exists("addressbook.json"):withopen(r'addressbook.json','r',encoding='utf-8')asf:ab=json.load(f)whileTrue:print("|---欢迎使用通讯录程序---|")print("|---1:显示通讯录清单---|")print("|---2:查询联系人资料---|")print("|---3:插入新的联系人---|")print("|---4:删除已有联系人---|")print("|---0:退出-------------|")choice=input('请选择功能菜单(0-4):')ifchoice=='1':if(len(ab)==0):print("通讯录为空")综合应用:【例6.34】基于字典的通信录(addressbook.py)(2)else:fork,vinab.items():print("姓名={},联系电话={}".format(k,v))elifchoice=='2':name=input("请输入联系人姓名:")if(namenotinab):ask=input("联系人不存在,是否增加用户资料(Y/N)")ifaskin["Y","y"]:tel=input("请输入用户联系电话:")ab[name]=telelse:print("联系人信息:{}{}".format(name,ab[name]))elifchoice=='3':name=input("请输入联系人姓名:")if(nameinab):print("已存在联系人:{}{}".format(name,ab[name]))ask=input("是否修改用户资料(Y/N)")综合应用:【例6.34】基于字典的通信录(addressbook.py)(3)ifask
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026山西太原市太航医院招聘57人笔试模拟试题及答案解析
- 2026湖北武汉市武昌医院卫生专业技术岗位招聘笔试参考题库及答案解析
- 统计学统计学第2章数据的描述
- 2026广东省安全生产和应急管理科学技术研究院博士后创新实践基地2026年博士后研究人员招聘笔试参考题库及答案解析
- 必考100道传统文化知识测试题
- 2026广西南宁兴宁区虹桥幼儿园招聘1人笔试模拟试题及答案解析
- 主题阅读1-3:科学技术类 环境保护类 自然生态类(原卷版)-2026年中考语文一轮复习现代文阅读
- 2025年重庆对外经贸学院单招综合素质考试题库及答案解析
- 2026浙江温州市平阳县直属人力资源发展有限公司招聘2名酒店管理人员考试备考试题及答案解析
- 资深管理者的职场管理经验分享【课件文档】
- 物业小区控烟监督制度
- 2026年郑州市检验检测有限公司公开招聘19人笔试备考题库及答案解析
- 2025年11月中国人民财产保险股份有限公司临海支公司招考笔试历年典型考点题库附带答案详解试卷2套
- 2025年内蒙古建筑职业技术学院单招职业技能考试试题及答案解析
- 多模式镇痛临床实践与应用
- 2026吉林农业大学三江实验室办公室招聘工作人员笔试备考试题及答案解析
- 农田水利工程施工组织设计范例
- 脑中风科普知识讲座
- 2026年官方标准版离婚协议书
- 化验室复工安全培训课件
- 世界现代设计史第二版第三章现代设计的前奏课件
评论
0/150
提交评论