zoukankan      html  css  js  c++  java
  • python 类 练习

     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')
  • 相关阅读:
    为什么下水井盖是圆的
    静心尽力
    菜鸟的一年
    [转]Libev教程
    流媒体:V4L2视频获取
    [转]Libev源码分析 -- 整体设计
    c#操作xml增删改查
    dwz简单配置与操作
    jsonp 跨域访问
    操作cookie.判断浏览器系统版本,判断safir浏览器存储数据
  • 原文地址:https://www.cnblogs.com/lovely7/p/5796289.html
Copyright © 2011-2022 走看看