Python学习——阶段综合练习二

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

综合之前的类的学习,做以下实例练习:(建议先不要看代码,自己先试着写;代码仅供参考,有多种实现方法)

1.Triangle & Equilateral

1). 创建class Triangle 表示三角形,包含三个属性值:angle1、angle2、angle3;

类方法 check_angles():若三个角相加 == 180,return True;若不是,return False

1classTriangle(object):2def__init__(self,angle1,angle2,angle3):3self.angle1 =angle14self.angle2 =angle25self.angle3 =angle367defcheckAngles(self):8if(self.angle1+self.angle2+self.angle3) == 180:9returnTrue10else:11returnFalse1213t1 = Triangle(40,50,90)14PRint(t1.angle1,t1.angle2,t1.angle3)15print(t1.checkAngles())16t2 = Triangle(40,50,91)17print(t2.checkAngles())

Triangle

2). 创建class Equilateral 继承上例1的Triangle,表示等边三角形,同Triangle不同点在于,其属性值的三个角均为60;而对应的check_angles()自然始终返回True

1classEquilateral(Triangle):2def__init__(self,angle1=60,angle2=60,angle3=60):3self.angle1 =angle14self.angle2 =angle25self.angle3 =angle367t3 =Equilateral()8print(t3.angle1,t3.angle2,t3.angle3)9print(t3.checkAngles())

Equilateral 1

如上示例代码可满足条件,但更好的做法是调用父类构造函数,并重写check_angles()使其始终返回 True,参见代码如下

1classEquilateral(Triangle):2def__init__(self,angle1=60,angle2=60,angle3=60):3Triangle.__init__(self,angle1,angle2,angle3)45defcheckAngles(self):6returnTrue78t3 =Equilateral()9print(t3.angle1,t3.angle2,t3.angle3)10print(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"

1classCar(object):2condition ="new"3def__init__(self,model,color,mpg):4self.model =model5self.color =color6self.mpg =mpg78defdisplayCar(self):9print("This is a {s.color} {s.model} car with {s.mpg} MPG.".format(s=self))1011defdriveCar(self):12self.condition ="used"1314car1 = Car("DeLorean","silver", 88)15car1.displayCar()16print(Car.condition)17print(car1.condition)18car1.driveCar()19print(car1.condition)

Car

2). 创建class ElectricCar 继承 Car,新增一属性变量 battery_type;重写driveCar()函数,改变 condition = "like new"

1classElectricCar(Car):2def__init__(self,model,color,mpg,battery_type):3Car.__init__(self,model,color,mpg)4self.battery_type =battery_type56defdriveCar(self):7self.condition ="like new"89car2 = ElectricCar("dd","Red",88,"molten salt")10print(car2.battery_type,car2.condition)11car2.displayCar()#继承Car方法12car2.driveCar()#调用重写后的方法13print(car2.condition)

ElectricCar

3. Point3D

创建class Point3D,表示三维坐标上的一个点,包含三个属性变量:x,y,z

类 __repr__ 方法显示为 (x,y,z)

类方法 distance() 返回改点距原点(0,0,0) 的距离

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

1importmath2classPoint3D(object):3def__init__(self,x,y,z):4self.x =x5self.y =y6self.z =z7def__repr__(self):8return("({s.x},{s.y},{s.z})".format(s=self))910defdistance(self):11d = math.sqrt(self.x**2+self.y**2+self.z**2)12returnd1314point1 = Point3D(3,4,0)15print(point1)16print(point1.distance())

Point3D

4. Employee & PartTimeEmployee

1).创建class Employee,包含成员变量hour_wage =20,构造函数包含属性变量:name;

类方法 calculateWage() 计算当天工钱,传参hours,return hours*hour_wage

1classEmployee(object):2hour_wage = 203def__init__(self,name):4self.name =name56defcalculateWage(self,hours):7returnself.hour_wage*hours89Peter = Employee("Peter")10print(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

1classPartTimeEmployee(Employee):2hour_wage=183parttime_wage=1545defcalculateWage(self,hours):6ifhours>=8:7returnself.hour_wage*hours8else:9returnself.parttime_wage*hours1011May = PartTimeEmployee("May")12print(May.calculateWage(5))13print(May.calculateWage(8))

PartTimeEmployee

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航