Size: 5988
Comment:
|
Size: 5949
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 21: | Line 21: |
import time #导入time模块 thisyear = time.localtime()[0] #获取当前年份 if thisyear % 400 == 0 or thisyear % 4 ==0 and thisyear % 100 <> 0: #判断闰年条件,满足模400为0,或者模4为0但模100不为0 |
#导入time模块 import time #获取当前年份 thisyear = time.localtime()[0] #判断闰年条件,满足模400为0,或者模4为0但模100不为0 if thisyear % 400 == 0 or thisyear % 4 ==0 and thisyear % 100 <> 0: |
Line 39: | Line 40: |
x = 12*34+78-132/6 #表达式计算 |
#表达式计算 x = 12*34+78-132/6 |
Line 48: | Line 49: |
import math #导入数学计算模块 a = math.fmod(145, 23) #求余函数 b = math.sin(0.5) #正弦函数 c = math.cos(0.5) #余弦函数 |
#导入数学计算模块 import math #求余函数 a = math.fmod(145, 23) #正弦函数 b = math.sin(0.5) #余弦函数 c = math.cos(0.5) |
Line 69: | Line 73: |
if index > 3: index = 2*3 -index #调整index print ' '*(3-index), #输出每行空格个数 print '*'*(2*index - 1) #输出每行*的个数 |
if index > 3: #调整index index = 2*3 -index #输出每行空格个数 print ' '*(3-index), #输出每行*的个数 print '*'*(2*index - 1) |
status |
校对 |
完成度70% |
1. 故事练习解答
1.1. CDays
1.1.1. CDays-5
- 计算今年是闰年嘛?
- 相关代码:
1 #coding:utf-8
2 '''cdays-5-exercise-1.py this year is a leap year or not
3 @author: U{shengyan<mailto:[email protected]>}
4 @version:$Id$
5 '''
6 #导入time模块
7 import time
8 #获取当前年份
9 thisyear = time.localtime()[0]
10 #判断闰年条件,满足模400为0,或者模4为0但模100不为0
11 if thisyear % 400 == 0 or thisyear % 4 ==0 and thisyear % 100 <> 0:
12 print 'this year %s is a leap year' % thisyear
13 else:
14 print 'this year %s is not a leap year' % thisyear
利用python作为科学计算器。熟悉Python中的常用运算符,并分别求出表达式12*34+78-132/6、(12*(34+78)-132)/6、(8.6/4)**5的值。并利用math模块进行数学计算,分别求出145/23的余数,0.5的sin和cos值等等,详细可参考help(math)。
- 相关代码:
1 #coding:utf-8
2 '''cdays-5-exercise-2.py basic operation and math library
3 @author: U{shengyan<mailto:[email protected]>}
4 @version:$Id$
5 '''
6 #表达式计算
7 x = 12*34+78-132/6
8 y = (12*(34+78)-132)/6
9 z = (8.6/4)**5
10
11 print '12*34+78-132/6 = %d' % x
12 print '(12*(34+78)-132)/6 = %d' % y
13 print '(8.6/4)**5 = %f' % z
14
15 #导入数学计算模块
16 import math
17 #求余函数
18 a = math.fmod(145, 23)
19 #正弦函数
20 b = math.sin(0.5)
21 #余弦函数
22 c = math.cos(0.5)
23
24 print '145/23的余数 = %d' % a
25 print 'sin(0.5) = %f' %b
26 print 'cos(0.5) = %f' %c
- 编写程序,在屏幕上打印出如下图案:
attachment:cdays-5-exercise-3.png
- 相关代码:
截图
1.1.2. CDays-4
os 模块中还有哪些功能可以使用? -- 提示使用 dir() help()
open() 还有哪些模式可以使用?
尝试for .. in .. 循环可以对哪些数据类型进行操作?
- 格式化声明,还有哪些格式可以进行约定?
- 现在的写入文件模式好嘛? 有改进的余地?
CDay-4-5.py 好在哪里? :
CDay-4-6.py 又更加好在哪里? :
- 读取文件cdays-4-test.txt内容,去除空行和注释行后,以行为单位进行排序,并将结果输出为cdays-4-result.txt。
1.1.3. CDays-3
根据 [http://www.woodpecker.org.cn/diveintopython/scripts_and_streams/command_line_arguments.html DiPy 10.6. 处理命令行参数] 使用getopt.getopt() 优化当前功能函式。
读取某一简单索引文件cdays-3-test.txt,其每行格式为文档序号 关键词,现需根据这些信息转化为倒排索引,即统计关键词在哪些文档中,格式如下:包含该关键词的文档数 关键词 => 文档序号。其中,原索引文件作为命令行参数传入主程序,并设计一个collect函数统计关键字-序号结果对,最后在主程序中输出结果至屏幕。
- 八皇后问题。在8*8的棋盘上,放置8个皇后,使得任两个皇后不在同行同列同正负对角线上。
1.1.4. CDays-2
把最后探索出的 cdcGrep()嵌入 pycdc-v0.5.py 实现完成版本的 PyCDC
- 编写一个类,实现简单的栈。数据的操作按照先进后出(FILO)的顺序。主要成员函数为put(item),实现数据item插入栈中;get(),实现从栈中取一个数据。
1.1.5. CDays-1
- 自动判定你自个儿的Blog 是什么编码的?
- 在题一基础上,如果blog的编码不是utf-8,编写小程序自动将其转换成utf-8 编码保存到本地?
1.1.6. CDays-0
- 请根据软件发布的流程和软件开发的编码规范,将读者之前章节写的程序修改并发布出去。另外,可以查找下除了epydoc外还有哪些较好的py文档生成器?
1.1.7. CDays+1
- 编程实现以下功能并进行最大化的优化:遍历指定目录下的所有文件,找出其中占用空间最大的前3个文件。
利用ConfigParser,将上述题目中产生的结果按照cdays+1-my.ini格式存储到文件cdays+1-result.txt中。
1.1.8. CDays+2
- 如果在Karrigell 实例中,不复制 cdctools.py 到webapp 目录中,也可以令 index.ks 引用到?
- 经过本章Karrigell的初步学习,实现一个简易的web留言系统。主要利用Karrigell_quick_form实现提交留言并显示出来。
1.1.9. CDays+3
- 熟悉线程相关知识后,利用Lock和RLock实现线程间的简单同步,使得10个线程对同一共享变量进行递增操作,使用加锁机制保证变量结果的正确。
- 使用Queue实现多线程间的同步。比如说,十个输入线程从终端输入字符串,另十个输出线程依次获取字符串并输出到屏幕。
- Python中的Event是用于线程间的相互通信,主要利用信号量机制。修改题一的程序,利用信号量重新实现多线程对同一共享变量进行递增操作。
1.2. KDays
1.3. 小结
::-- ZoomQuiet [DateTime(2008-04-26T07:41:41Z)] PageComment2