收藏 分享(赏)

可爱的python习题答案.doc

上传人:精品资料 文档编号:9384140 上传时间:2019-08-04 格式:DOC 页数:42 大小:1.03MB
下载 相关 举报
可爱的python习题答案.doc_第1页
第1页 / 共42页
可爱的python习题答案.doc_第2页
第2页 / 共42页
可爱的python习题答案.doc_第3页
第3页 / 共42页
可爱的python习题答案.doc_第4页
第4页 / 共42页
可爱的python习题答案.doc_第5页
第5页 / 共42页
点击查看更多>>
资源描述

1、可爱的 python 习题答案status 校对 lizzie 完成度 100% CDays-51. 计算今年是闰年嘛?判断闰年条件, 满足年份模 400 为 0, 或者模 4 为 0 但模 100不为 0. o 源代码 Toggle line numbers 1 #coding:utf-82 cdays-5-exercise-1.py 判断今年是否是闰年3 note: 使用了 import, time 模块, 逻辑分支, 字串格式化等4 5 6 import time #导入 time模块7 thisyear = time.localtime()0 #获取当前年份8 if thisyear

2、% 400 = 0 or thisyear % 4 =0 and thisyear % 100 文档序号。其中,原索引文件作为命令行参数传入主程序,并设计一个 collect 函式统计 “关键字序号“ 结果对,最后在主程序中输出结果至屏幕。 o cdays-3-test.txt 内容:o 1 key1o 2 key2o 3 key1o 7 key3o 8 key2o 10 key1o 14 key2o 19 key4o 20 key130 key3o 源代码 Toggle line numbers 1 #coding:utf-82 cdays-3-exercise-2.py 字典的使用3 no

3、t: 使用 sys.args, 字典操作, 函式调用4 see: sys 模块参见 help(sys)5 6 7 import sys #导入 sys 模块8 9 def collect(file):10 改变 key-value 对为 value-key 对11 param file: 文件对象12 return: 一个 dict 包含 value-key 对13 14 result = 15 for line in file.readlines(): #依次读取每行16 left, right = line.split() #将一行以空格分割为左右两部分17 if result.has_k

4、ey(right): #判断是否已经含有 right 值对应的 key18 resultright.append(left) #若有,直接添加到 resultright的值列表19 else:20 resultright = left #没有,则新建 resultright的值列表21 return result22 23 if _name_ = “_main_“:24 if len(sys.argv) = 1: #判断参数个数25 print usage:ntpython cdays-3-exercise-2.py cdays-3-test.txt26 else:27 result = co

5、llect(open(sys.argv1, r) #调用 collect 函式,返回结果28 for (right, lefts) in result.items(): #输出结果29 print “%d %st=t%s“ % (len(lefts), right, lefts)30 o 运行截屏 3. 八皇后问题。在 8*8 的棋盘上,放置 8 个皇后,使得任两个皇后不在同行同列同正负对角线上。 o 源代码 Toggle line numbers 1 #coding:utf-82 cdays-3-exercise-3.py3 note: 使用全局变量和函式的递归调用4 5 6 global

6、col #定义一些全局变量7 global row8 global pos_diag9 global nag_diag10 global count11 12 def output(): 13 输出一种有效结果14 15 global count16 print row17 count += 118 19 def do_queen(i):20 生成所有正确解21 param i: 皇后的数目22 23 for j in range(0, 8): #依次尝试 07 位置24 if colj = 1 and pos_diagi-j+7 = 1 and nag_diagi+j = 1: #若该行,正

7、对角线,负对角线上都没有皇后,则放入 i 皇后25 rowi = j26 colj = 0 #调整各个列表状态27 pos_diagi-j+7 = 028 nag_diagi+j = 029 if i “14 self.intro = PyCDC0.5 使用说明:15 dir 目录名 #指定保存和搜索目录,默认是 “cdc“16 walk 文件名 #指定光盘信息文件名,使用 “*.cdc“17 find 关键词 #遍历搜索目录中所有.cdc 文件,输出含有关键词的行18 ? # 查询19 EOF # 退出系统,也可以使用 Crtl+D(Unix)|Ctrl+Z(Dos/Windows)20 2

8、1 22 def help_EOF(self):23 print “退出程序 Quits the program“24 def do_EOF(self, line):25 sys.exit()26 27 def help_walk(self):28 print “扫描光盘内容 walk cd and export into *.cdc“29 def do_walk(self, filename):30 if filename = “:filename = raw_input(“输入 cdc 文件名: “)31 print “扫描光盘内容保存到:%s“ % filename32 cdWalker

9、(self.CDROM,self.CDDIR+filename)33 34 def help_dir(self):35 print “指定保存/搜索目录“36 def do_dir(self, pathname):37 if pathname = “: pathname = raw_input(“输入指定保存/搜索目录: “)38 self.CDDIR = pathname39 print “指定保存/搜索目录:%s ;默认是:%s“ % (pathname,self.CDDIR)40 41 def help_find(self):42 print “搜索关键词“43 def do_find(

10、self, keyword):44 if keyword = “: keyword = raw_input(“输入搜索关键字: “)45 print “搜索关键词:%s“ % keyword46 cdcGrep(self.CDDIR,keyword)47 48 if _name_ = _main_: # this way the module can be49 cdc = PyCDC() # imported by other programs as well50 cdc.cmdloop()51 2. 编写一个类,实现简单的栈。数据的操作按照先进后出(FILO)的顺序。主要成员函式为 put(

11、item),实现数据 item 插入栈中;get() ,实现从栈中取一个数据。 o 源代码 Toggle line numbers 1 #coding:utf-82 cdays-2-exercise-2.py 自定义栈3 note: 类和对象的使用4 5 6 class MyStack(object):7 MyStack8 自定义栈,主要操作有 put(), get() and isEmpty()9 10 def _init_(self, max):11 12 初始栈头指针和清空栈13 param max: 指定栈的最大长度14 15 self.head = -116 self.stack =

12、 list()17 self.max = max18 for i in range(self.max):19 self.stack.append(0)20 21 def put(self, item):22 23 将 item 压入栈中24 param item: 所要入栈的项25 26 if self.head = self.max: #判断当前栈是否满了27 return Put Error: The Stack is Overflow! #提示栈溢出28 else:29 self.head += 1 #不满,则将 item 入栈,调整栈顶指针30 self.stackself.head

13、= item31 print Put %s Success % item32 33 def get(self):34 35 获得当前栈顶 item36 return: 栈顶 item37 38 if self.head 4 version:$Id$5 note: 使用 chardet 和 urllib26 see: chardet 使用文档: http:/chardet.feedparser.org/docs/, urllib2 使用参考: http:/docs.python.org/lib/module-urllib2.html7 8 9 import sys10 import urllib

14、211 import chardet12 13 def blog_detect(blogurl):14 15 检测 blog 的编码方式16 param blogurl: 要检测 blog 的 url17 18 try:19 fp = urllib2.urlopen(blogurl) #尝试打开给定 url20 except Exception, e: #若产生异常,则给出相关提示并返回21 print e22 print download exception %s % blogurl23 return 024 blog = fp.read() #读取内容25 codedetect = cha

15、rdet.detect(blog)“encoding“ #检测得到编码方式26 print %st4 version:$Id$5 note: 使用 chardet 和 urllib26 see: chardet 使用文档: http:/chardet.feedparser.org/docs/, urllib2 使用参考: http:/docs.python.org/lib/module-urllib2.html7 8 import sys9 import urllib210 import chardet11 12 def blog_detect(blogurl):13 14 检测 blog 的

16、编码方式15 param blogurl: 要检测 blog 的 url16 17 try:18 fp = urllib2.urlopen(blogurl) #尝试打开给定 url19 except Exception, e: #若产生异常,则给出相关提示并返回20 print e21 print download exception %s % blogurl22 return 023 blog = fp.read() #读取内容24 fp.close() #关闭25 codedetect = chardet.detect(blog)“encoding“ #检测得到编码方式26 if code

17、detect t%s % (f, s)44 o 运行截屏 2. 利用 ConfigParser,将上述题目中产生的结果按照 cdays+1-my.ini 格式存储到文件 cdays+1-result.txt 中。 o cdays+1-my.ini 内容为:o Numbero filesize = somefilesizefilename = somefilenameo 源代码 Toggle line numbers 1 #coding:utf-82 cdays+1-exercise-2.py 3 note: 利用 ConfigParser 解析 ini 格式4 see: 文档参见http:/p

18、ydoc.org/2.4.1/ConfigParser.html, 其他例子http:/effbot.org/librarybook/configparser-example-1.py5 author: Ushengyan6 version:$Id$7 8 import os9 import sys10 from ConfigParser import RawConfigParser11 12 def iniTT(size_file):13 按照.ini 的格式,存储 size_file14 15 cfg = RawConfigParser()16 print size_file17 inde

19、x = 118 for (s, f) in size_file:19 cfg.add_section(“%d“ % index) #增加一个 section20 cfg.set(“%d“ % index, Filename, f) #在该 section 设置 Filename 及其值21 cfg.set(“%d“ % index, FileSize, s) #在该 section 设置 FileSize 及其值22 index += 123 24 cfg.write(open(cdays+1-result.txt,“w“)25 26 def gtt(path):27 获取给定路径中文件大小最

20、大的三个28 param path: 指定路径29 return 返回一个 list,每项为 (size, filename)30 31 all_file = 32 for root, dirs, files in os.walk(path): #遍历 path33 for onefile in files:34 fname = os.path.join(root, onefile) #获得当前处理文件的完整名字35 fsize = os.stat(fname).st_size #获得当前处理文件大小36 if all_file.has_key(fsize): #按照文件大小存储37 all_

21、filefsize.append(fname)38 else:39 all_filefsize = fname40 fsize_key = all_file.keys() #得到所有的文件大小41 fsize_key.sort() #排序,从小到大42 result = 43 for i in -1, -2, -3: #依次取最大的三个44 for j in all_filefsize_keyi: #保存45 result.append(fsize_keyi, j)46 return result:3 #返回前三个47 48 if _name_ = “_main_“:49 if len(sys

22、.argv) = 1:50 print usage:ntpython cdays+1-exercise-2.py path51 else:52 abs_path = os.path.abspath(sys.argv1)53 if not os.path.isdir(abs_path):54 print %s is not exist % abs_path55 else:56 #from cdays+1-exercise-1 import get_top_three as gtt57 iniTT(gtt(abs_path)58 o 运行结果 CDays21. 如果在 Karrigell 实例中,不复制 cdctools.py 到 webapps 目录中,也可以令 index.ks 引用到? o 不复制 cdctools.py 到 webapp 目录中,也可以令 index.ks 引用到,可以通过以下方式: 修改 Python 的环境变量 PYTHONPATH,把 cdctools.py 的所在目录路径加入 在程序里动态的修改 sys.path Toggle line numbers

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报