您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 述职报告 > python核心编程第二版课后题答案第九章
9.11练习9–1.文件过滤.显示一个文件的所有行,忽略以井号(#)开头的行.这个字符被用做Python,Perl,Tcl,等大多脚本文件的注释符号.附加题:处理不是第一个字符开头的注释.withopen(data.txt)asfobj:foreachlineinfobj:ifnoteachline.startswith(#):printeachline附件题看不懂。。。。。9–2.文件访问.提示输入数字N和文件F,然后显示文件F的前N行.filename=raw_input(pleaseenterthefilename:)num=int(raw_input(pleaseenterthelinenumber:))foreachlineinopen(filename):ifnum:printeachlinenum-=1else:break程序输出:pleaseenterthefilename:data.txtpleaseenterthelinenumber:5#第一行helloworld#第二行ilovethisworld#第三行9–3.文件信息.提示输入一个文件名,然后显示这个文本文件的总行数.filename=raw_input(pleaseenterthefilename:)printlen([lineforlineinopen(filename)])程序输出:pleaseenterthefilename:data.txt89–4.文件访问.写一个逐页显示文本文件的程序.提示输入一个文件名,每次显示文本文件的25行,暂停并向用户提示按任意键继续.,按键后继续执行.withopen(data.txt,a+)asfobj:foriinrange(100):fobj.write(str(i))fobj.write(\n)withopen(data.txt)asfobj:num=1foreachlineinfobj:ifnum%26!=0:printeachline,num+=1else:go=raw_input(continue(ctocontinue,othertoquit):)num+=1ifgo!=c:break9–6.文件比较.写一个比较两个文本文件的程序.如果不同,给出第一个不同处的行号和列号.fobj1=open(data1.txt)fobj2=open(data2.txt)lines1=fobj1.readlines()lines2=fobj2.readlines()foriinrange(min(len(lines1),len(lines2))):iflines1[i]!=lines2[i]:printibreak9–7.解析文件.Win32用户:创建一个用来解析Windows.ini文件的程序.这道题我没看懂,如何解析???9–9.Python文档字符串.进入Python标准库所在的目录.检查每个.py文件看是否有__doc__字符串,如果有,对其格式进行适当的整理归类.你的程序执行完毕后,应该会生成一个漂亮的清单.里边列出哪些模块有文档字符串,以及文档字符串的内容.清单最后附上那些没有文档字符串模块的名字.附加题:提取标准库中各模块内全部类(class)和函数的文档.这道题忽悠了我一个晚上。第一:根本就不存在__doc__的字符串,当我们运行模块.__doc__的时候,实际上是读取开头的字符串。所以我们要判断是开头是否存在“”“字符串”“”这样的格式。程序如下:importosimportsysnum=[]将所有路径文件名全部提出出来deffun(dirName):foriinos.listdir(dirName):ifos.path.isdir(dirName+\\+i):fun(dirName+\\+i)else:num.append(dirName+\\+i)fun(rC:\Python27\Lib)hasDoc=FalsestrTemp=fileobj1=open(hasdoc.txt,a+)fileobj2=open(nodoc.txt,a+)foriinnum:fobj=open(i)foreachlineinfobj:if(nothasDoc)andeachline.startswith(''):hasDoc=TrueelifhasDocandeachline.startswith(''):hasDoc=FalsestrTemp+=eachlinebreakifhasDoc:strTemp+=eachlineelse:breakifstrTemp!=:fileobj1.write(文件名:+i+\n)fileobj1.write(__doc__is:+\n)fileobj1.write(strTemp+\n)else:fileobj2.write(文件名:+i+\n)strTemp=fobj.close()fileobj1.close()fileobj2.close()今天头好疼!!真的好疼,一点看书的欲望都没有。最近还花了点时间学习wxpython,专门用来对付习题9-10,9-11这种图形界面的设计,但是发现学习的蛋疼,可能我这人不太喜欢用UI这些东西吧。所以,习题9-10,9-11,9-12就不做了。9–13.命令行参数a)什么是命令行参数,它们有什么用?b)写一个程序,打印出所有的命令行参数.a)跟随着命令写入的参数,主要用于linux下运行程序#coding=utf-8importsysforiinrange(1,len(sys.argv)):printparameter%d:%s%(i,sys.argv[i])程序输入输出:习题9-14#coding=utf-8计算器程序,模仿内建函数eval()importsysimportosdefnew_eval(num):ifnum[1]==+:returnint(num[0])+int(num[2])elifnum[1]==-:returnint(num[0])-int(num[2])elifnum[1]==*:returnint(num[0])*int(num[2])elifnum[1]==/:returnint(num[0])/int(num[2])elifnum[1]==%:returnint(num[0])%int(num[2])elifnum[1]==**:returnint(num[0])**int(num[2])else:returnerroroperatorif__name__==__main__:ifsys.argv[1:][0]==print:withopen(result.txt)asfobj:printfobj.read()os.remove(result.txt)else:withopen(result.txt,a+)asfobj:fobj.write(.join(sys.argv[1:]))fobj.write(\n)fobj.write(str(new_eval(sys.argv[1:])))fobj.write(\n)printtheresultis:%d%(new_eval(sys.argv[1:]))不要小看任何一个小程序,这段代码我写了很久,很多细节的东西都没有掌握,也可能是太久没写python代码的缘故吧。程序输入输出:9–15.复制文件.提示输入两个文件名(或者使用命令行参数).把第一个文件的内容复制到第二个文件中去.#coding=utf-8file1=raw_input(pleaseenterfile1:)file2=raw_input(pleaseenterfile2:)withopen(file1)asfobj1:withopen(file2,w)asfobj2:foriinfobj1:fobj2.write(i)withopen(file2)asfobj2:printfobj2.read()程序输入输出:pleaseenterfile1:hello.txtpleaseenterfile2:world.txthelloworld无论如何,都要坚持下去加油9–16.文本处理.人们输入的文字常常超过屏幕的最大宽度.编写一个程序,在一个文本文件中查找长度大于80个字符的文本行.从最接近80个字符的单词断行,把剩余文件插入到下一行处.程序执行完毕后,应该没有超过80个字符的文本行了.importosfile1=raw_input(pleaseenterthefile:)withopen(file1)asfobj1:withopen(temp.txt,w)asfobj2:foriinfobj1:iflen(i)80:num=list(i)count=len(num)/80foriinrange(count):fobj2.write(.join(num[:79]))fobj2.write(\n)num=num[79:]fobj2.write(.join(num))else:fobj2.write(i)fobj2.write(\n)withopen(temp.txt)asfobj2:withopen(file1,w)asfobj1:foriinfobj2:fobj1.write(i)os.remove(temp.txt)9–17.文本处理.创建一个原始的文本文件编辑器.你的程序应该是菜单驱动的,有如下这些选项:1)创建文件(提示输入文件名和任意行的文本输入),2)显示文件(把文件的内容显示到屏幕),3)编辑文件(提示输入要修改的行,然后让用户进行修改),4)保存文件,以及5)退出.classfileEdit(object):defnewFile(self,fileName,fileText):withopen(fileName,a+)asfobj:fobj.write(fileText)defshowFile(self,fileName):strTemp=withopen(fileName)asfobj:foriinfobj:strTemp+=ireturnstrTempdefeditFile(self,fileName,lineNum,newText):lines=[]withopen(fileName)asfobj:lines=fobj.readlines()iflineNumlen(lines):returnFalselines[lineNum-1]=newTextwithopen(fileName,w)asfobj:fobj.writelines(lines)if__name__==__main__:whileTrue:fobj=fileEdit()printntonewfileprintstoshowfileprintetoeditfileprintandqtoquitfilechoice=raw_input(pleaseenterthechoice:)ifchoice.lower()==q:breakifchoice.lower()notin[n,s,e]:continueelse:ifchoice.lower()==n:fileName=raw_input(pleaseenterthefilename:)fileText=whileTrue:Text=raw_input(pleaseenterthetext(qtoquit):)ifText.lower()==q:breakfileText+=TextfileText+=\nfobj.newFile(fileName,fileText)elifchoice.lower()==s:fileName=raw_input(pleaseenterthefilename:)printfobj.showFile(fileName)elifchoice.lower()==e:fileName=raw_input(pl
本文标题:python核心编程第二版课后题答案第九章
链接地址:https://www.777doc.com/doc-4210883 .html