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')