设为首页 收藏本站
查看: 1603|回复: 0

[经验分享] Python学习 —— 阶段综合练习二

[复制链接]

尚未签到

发表于 2015-11-29 09:00:30 | 显示全部楼层 |阅读模式
  综合之前的类的学习,做以下实例练习:(建议先不要看代码,自己先试着写;代码仅供参考,有多种实现方法)
  
  1. Triangle  & Equilateral
      1). 创建class Triangle 表示三角形,包含三个属性值:angle1、angle2、angle3;
          类方法 check_angles():若三个角相加 == 180,return True;若不是,return False


DSC0000.gif DSC0001.gif


1 class Triangle(object):
2     def __init__(self,angle1,angle2,angle3):
3         self.angle1 = angle1
4         self.angle2 = angle2
5         self.angle3 = angle3
6
7     def checkAngles(self):
8         if (self.angle1+self.angle2+self.angle3) == 180 :
9             return True
10         else:
11             return False
12
13 t1 = Triangle(40,50,90)
14 print(t1.angle1,t1.angle2,t1.angle3)
15 print(t1.checkAngles())
16 t2 = Triangle(40,50,91)
17 print(t2.checkAngles())
Triangle  2). 创建class Equilateral 继承上例1的Triangle,表示等边三角形,同Triangle不同点在于,其属性值的三个角均为60;而对应的 check_angles() 自然始终返回True





1 class Equilateral(Triangle):
2     def __init__(self,angle1=60,angle2=60,angle3=60):
3         self.angle1 = angle1
4         self.angle2 = angle2
5         self.angle3 = angle3
6         
7 t3 = Equilateral()
8 print(t3.angle1,t3.angle2,t3.angle3)
9 print(t3.checkAngles())
Equilateral 1
  如上示例代码可满足条件,但 更好的做法 是调用父类构造函数,并重写check_angles() 使其始终返回 True,参见代码如下





1 class Equilateral(Triangle):
2     def __init__(self,angle1=60,angle2=60,angle3=60):
3         Triangle.__init__(self,angle1,angle2,angle3)
4     
5     def checkAngles(self):
6         return True
7
8 t3 = Equilateral()
9 print(t3.angle1,t3.angle2,t3.angle3)
10 print(t3.checkAngles())
Equilateral 2  
  2.  Car & ElectricCar
      1). 创建class Car 成员变量condition = "new",包含三个构造属性:model,color,mpg;
          类方法 displayCar() print 拼接的字符串 This is a {color} {model} car with {mpg} MPG.  如 "This is a blue Xmodel car with 40 MPG."
        类方法 driveCar() 改变成员变量condition = "used"





1 class Car(object):
2     condition = "new"
3     def __init__(self,model,color,mpg):
4         self.model = model
5         self.color = color
6         self.mpg = mpg
7     
8     def displayCar(self):
9         print ("This is a {s.color} {s.model} car with {s.mpg} MPG.".format(s=self))
10         
11     def driveCar(self):
12         self.condition = "used"
13
14 car1 = Car("DeLorean", "silver", 88)
15 car1.displayCar()
16 print(Car.condition)
17 print(car1.condition)
18 car1.driveCar()
19 print(car1.condition)
Car  2). 创建class ElectricCar 继承 Car,新增一属性变量 battery_type;重写driveCar()函数,改变 condition = "like new"





1 class ElectricCar(Car):
2     def __init__(self,model,color,mpg,battery_type):
3         Car.__init__(self,model,color,mpg)
4         self.battery_type = battery_type
5     
6     def driveCar(self):
7         self.condition = "like new"
8
9 car2  = ElectricCar("dd","Red",88,"molten salt")
10 print(car2.battery_type,car2.condition)
11 car2.displayCar()                # 继承Car方法
12 car2.driveCar()                # 调用重写后的方法
13 print(car2.condition)
ElectricCar  
  3. Point3D
  创建class Point3D,表示三维坐标上的一个点,包含三个属性变量:x,y,z
      类 __repr__ 方法显示为 (x,y,z)
      类方法 distance() 返回改点距原点(0,0,0) 的距离

  Python 类方法 __repr__  重写 print class_name 时的显示,参考代码即可理解






1 import math
2 class Point3D(object):
3     def __init__(self,x,y,z):
4         self.x = x
5         self.y = y
6         self.z = z
7     def  __repr__(self):
8         return ("({s.x},{s.y},{s.z})".format(s=self))
9
10     def distance(self):
11         d = math.sqrt(self.x**2+self.y**2+self.z**2)
12         return d
13         
14 point1 = Point3D(3,4,0)
15 print(point1)
16 print(point1.distance())
Point3D  
  4. Employee & PartTimeEmployee
      1). 创建class Employee,包含成员变量hour_wage =20,构造函数包含属性变量:name;
        类方法 calculateWage() 计算当天工钱,传参hours,return hours*hour_wage





1 class Employee(object):
2     hour_wage = 20
3     def __init__(self,name):
4         self.name = name
5         
6     def calculateWage(self,hours):
7         return self.hour_wage*hours
8
9 Peter = Employee("Peter")
10 print(Peter.calculateWage(5))
Employee  2). 创建class PartTimeEmployee 继承 Employee,成员变量hour_wage=18, parttime_wage=15 构造函数同Employee
        类方法calculateWage()重写,若是hour>=8,则 return hour_wage*hours;若是hour<8,return parttime_wage*hours





1 class PartTimeEmployee(Employee):
2     hour_wage=18
3     parttime_wage=15
4     
5     def calculateWage(self,hours):
6         if hours>=8:
7             return self.hour_wage*hours
8         else:
9             return self.parttime_wage*hours
10
11 May = PartTimeEmployee("May")
12 print(May.calculateWage(5))
13 print(May.calculateWage(8))
PartTimeEmployee  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-144783-1-1.html 上篇帖子: Python学习总结之四 下篇帖子: ZMAN的学习笔记之Python篇:命令行解析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表