python核心编程第二版课后题答案第九章

上传人:第*** 文档编号:31078585 上传时间:2018-02-04 格式:DOCX 页数:12 大小:39.12KB
返回 下载 相关 举报
python核心编程第二版课后题答案第九章_第1页
第1页 / 共12页
python核心编程第二版课后题答案第九章_第2页
第2页 / 共12页
python核心编程第二版课后题答案第九章_第3页
第3页 / 共12页
python核心编程第二版课后题答案第九章_第4页
第4页 / 共12页
python核心编程第二版课后题答案第九章_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《python核心编程第二版课后题答案第九章》由会员分享,可在线阅读,更多相关《python核心编程第二版课后题答案第九章(12页珍藏版)》请在金锄头文库上搜索。

1、9.11 练习91. 文件过滤. 显示一个文件的所有行, 忽略以井号( # )开头的行. 这个字符被用做Python , Perl, Tcl, 等大多脚本文件的注释符号 .附加题: 处理不是第一个字符开头的注释.with open(data.txt) as fobj:for eachline in fobj:if not eachline.startswith(#):print eachline附件题看不懂。92. 文件访问. 提示输入数字 N 和文件 F, 然后显示文件 F 的前 N 行.filename = raw_input(please enter the filename:)num

2、= int(raw_input(please enter the line number:)for eachline in open(filename):if num:print eachlinenum -= 1else:break程序输出: please enter the filename:data.txtplease enter the line number:5#第一行hello world#第二行i love this world#第三行93. 文件信息. 提示输入一个文件名, 然后显示这个文本文件的总行数.filename = raw_input(please enter the

3、filename:)print len(line for line in open(filename)程序输出: please enter the filename:data.txt894. 文件访问. 写一个逐页显示文本文件的程序. 提示输入一个文件名, 每次显示文本文件的 25 行, 暂停并向用户提示按任意键继续., 按键后继续执行.with open(data.txt,a+) as fobj:for i in range(100):fobj.write(str(i)fobj.write(n)with open(data.txt) as fobj:num = 1for eachline i

4、n fobj:if num % 26 != 0:print eachline,num += 1else:go = raw_input(continue(c to continue, other to quit):)num += 1if go != c:break96. 文件比较. 写一个比较两个文本文件的程序. 如果不同, 给出第一个不同处的行号和列号.fobj1 = open(data1.txt)fobj2 = open(data2.txt)lines1 = fobj1.readlines()lines2 = fobj2.readlines()for i in range(min(len(l

5、ines1), len(lines2):if lines1i != lines2i:print ibreak97. 解析文件. Win32 用户 : 创建一个用来解析 Windows .ini 文件的程序.这道题我没看懂,如何解析?99. Python 文档字符串. 进入 Python 标准库所在的目录 . 检查每个 .py 文件看是否有_doc_ 字符串, 如果有 , 对其格式进行适当的整理归类. 你的程序执行完毕后, 应该会生成一个漂亮的清单. 里边列出哪些模块有文档字符串, 以及文档字符串的内容. 清单最后附上那些没有文档字符串模块的名字.附加题: 提取标准库中各模块内全部类(class

6、) 和函数的文档.这道题忽悠了我一个晚上。第一:根本就不存在_doc_的字符串,当我们运行模块._doc_的时候,实际上是读取开头的字符串。所以我们要判断是开头是否存在“”“字符串”“”这样的格式。程序如下:import osimport sysnum = 将所有路径文件名全部提出出来def fun(dirName):for i in os.listdir(dirName):if os.path.isdir(dirName + + i):fun(dirName + + i)else:num.append(dirName + + i)fun(rC:Python27Lib)hasDoc = Fal

7、sestrTemp = fileobj1 = open(hasdoc.txt,a+)fileobj2 = open(nodoc.txt,a+)for i in num:fobj = open(i)for eachline in fobj:if (not hasDoc) and eachline.startswith():hasDoc = Trueelif hasDoc and eachline.startswith():hasDoc = FalsestrTemp += eachlinebreakif hasDoc:strTemp += eachlineelse:breakif strTemp

8、!= :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、做了。913. 命令行参数a) 什么是命令行参数, 它们有什么用?b) 写一个程序, 打印出所有的命令行参数.a)跟随着命令写入的参数,主要用于 linux 下运行程序#coding=utf-8import sysfor i in range( 1, len( sys.argv ) ):print parameter %d : %s % ( i, sys.argvi )程序输入输出:习题 9-14# coding=utf-8计算器程序,模仿内建函数 eval() import sysimport osdef new_eval( num ):if num1 = +: return int( nu

10、m0 ) + int( num2 ) elif num1 = -: return int( num0 ) - int( num2 ) elif num1 = *: return int( num0 ) * int( num2 ) elif num1 = /: return int( num0 ) / int( num2 ) elif num1 = %: return int( num0 ) % int( num2 ) elif num1 = *: return int( num0 ) * int( num2 ) else: return error operator if _name_ = _

11、main_:if sys.argv1:0 = print:with open( result.txt ) as fobj:print fobj.read()os.remove(result.txt)else:with open( result.txt, a+ ) as fobj:fobj.write(.join(sys.argv1:)fobj.write(n)fobj.write( str(new_eval( sys.argv1: ) )fobj.write(n)print the result is : %d % ( new_eval( sys.argv1: ) ) 不要小看任何一个小程序,

12、这段代码我写了很久,很多细节的东西都没有掌握,也可能是太久没写 python 代码的缘故吧。程序输入输出:915. 复制文件. 提示输入两个文件名(或者使用命令行参数). 把第一个文件的内容复制到第二个文件中去.# coding=utf-8file1 = raw_input( please enter file1: )file2 = raw_input( please enter file2: )with open( file1 ) as fobj1:with open( file2 , w ) as fobj2:for i in fobj1:fobj2.write( i )with open

13、(file2) as fobj2:print fobj2.read()程序输入输出: please enter file1:hello.txtplease enter file2:world.txthello world无论如何,都要坚持下去加油916. 文本处理. 人们输入的文字常常超过屏幕的最大宽度 . 编写一个程序, 在一个文本文件中查找长度大于 80 个字符的文本行. 从最接近 80 个字符的单词断行, 把剩余文件插入到下一行处.程序执行完毕后, 应该没有超过 80 个字符的文本行了.import osfile1 = raw_input(please enter the file:)w

14、ith open(file1) as fobj1:with open(temp.txt,w) as fobj2:for i in fobj1:if len(i) 80:num = list(i)count = len(num) / 80for i in range(count):fobj2.write(.join(num:79)fobj2.write(n)num = num79:fobj2.write(.join(num)else:fobj2.write(i)fobj2.write(n)with open(temp.txt) as fobj2:with open(file1,w) as fob

15、j1:for i in fobj2:fobj1.write(i)os.remove(temp.txt)917. 文本处理. 创建一个原始的文本文件编辑器. 你的程序应该是菜单驱动的, 有如下这些选项:1) 创建文件(提示输入文件名和任意行的文本输入),2) 显示文件(把文件的内容显示到屏幕),3) 编辑文件(提示输入要修改的行, 然后让用户进行修改),4) 保存文件, 以及5) 退出.class fileEdit(object):def newFile(self, fileName, fileText):with open(fileName, a+) as fobj:fobj.write(fileText)def showFile(self, fileName):strTemp = with open(fileName) as fobj:for i in fobj:strTemp += ireturn strTempdef editFile(self, fileName, lineNum,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号