1 #encoding=utf-8
2 from __future__ import division
3 import time
4 # 13-5. 几何. 创建一个由有序数值对(x, y) 组成的 Point 类,它代表某个点的 X 坐标和 Y 坐
5 # 标。X 坐标和 Y 坐标在实例化时被传递给构造器,如果没有给出它们的值,则默认为坐标的原点。
6 class Point(object):
7 def __init__(self,x = 0,y = 0):
8 self.PointX = x
9 self.PointY = y
10 print '(%d,%d)'%(self.PointX,self.PointY)
11 p1 = Point()
12 p2 = Point(2,3)
13
14
15 # 13-6. 几何. 创建一个直线/直线段类。 除主要的数据属性: 一对坐标值(参见上一个练习)外,
16 # 它还具有长度和斜线属性。你需要覆盖__repr__()方法(如果需要的话,还有__str__()方法),使得
17 # 代表那条直线(或直线段)的字符串表示形式是由一对元组构成的元组,即,((x1, y1), (x2, y2)).
18 # 总结:
19 # __repr__ 将直线的两个端点(始点和止点)显示成一对元组
20 # length 返回直线段的长度 - 不要使用"len", 因为这样使人误解它是整数。
21 # slope 返回此直线段的斜率(或在适当的时候返回 None)
22
23
24 #额外
25 # Python求平方根至少有三种方式
26 # 1.最简单的方式是求0.5次方
27 # 1
28 # 4 ** 0.5
29 # 2.使用math包的sqrt函数
30 # 1
31 # math.sqrt(4)
32 # 3.使用numpy包的sqrt函数
33 # 1
34 # numpy.sqrt(4)
35 #
36
37 #round(a,2)可以把a保留二位小数
38 class line(object):
39 def __init__(self,p1 = Point(2,3),p2 = Point(1,2)):
40 self.point1 = p1
41 self.point2 = p2
42 def __repr__(self):
43 print 'line is'
44 print '((%d,%d),(%d,%d))'%(self.point1.PointX,self.point1.PointY, \
45 self.point2.PointX,self.point2.PointY)
46 def length(self):
47 x = self.point1.PointX - self.point2.PointX
48 y = self.point1.PointY - self.point2.PointY
49 tem1 = x*x + y*y
50 tem2 = tem1 ** 0.5
51 print 'line length is :%.2f ' % round(tem2,2)
52 def slope(self):
53 x = self.point1.PointX - self.point2.PointX
54 y = self.point1.PointY - self.point2.PointY
55 print 'line slope is %.2f' % (x/y)
56 l1 = line()
57 l1.__repr__()
58 l1.length()
59 l1.slope()
60
61 l2 = line(Point(1,5),Point(3,4))
62 l2.slope()
63
64 # 13-7. 数据类。提供一个 time 模块的接口,允许用户按照自己给定时间的格式,比如:
65 # “MM/DD/YY,” “MM/DD/YYYY,” “DD/MM/YY,” “DD/MM/ YYYY,” “Mon DD, YYYY,” 或是标准
66 # 的 Unix 日期格式:“Day Mon DD, HH:MM:SS YYYY” 来查看日期。你的类应该维护一个日期值,并
67 # 用给定的时间创建一个实例。如果没有给出时间值,程序执行时会默认采用当前的系统时间。还包
68 # 括另外一些方法:
69 # update() 按给定时间或是默认的当前系统时间修改数据值
70 # display() 以代表时间格式的字符串做参数,并按照给定时间的格式显示:
71 # 'MDY' ==> MM/DD/YY
72 # 'MDYY' ==> MM/DD/YYYY
73 # 'DMY' ==> DD/MM/YY
74 # 'DMYY' ==> DD/MM/YYYY
75 # 'MODYY' ==> Mon DD, YYYY
76 # 如果没有提供任何时间格式,默认使用系统时间或 ctime()的格式。 附加题: 把这个类和练习
77 # 6-15 结合起来
78 print time.ctime()
79
80 class myTime(object):
81 def update(self):
82 pass
83 def display(self,t):
84 if t == 'MDY':
85 print time.strftime("%m/%Y/%d",time.localtime())
86 if t == 'DMYY':
87 print time.strftime("%H/%M/%S",time.localtime())
88
89 time1 = myTime()
90 time1.display('MDY')
91 time1.display('DMYY')