Python学习 —— 阶段综合练习二
综合之前的类的学习,做以下实例练习:(建议先不要看代码,自己先试着写;代码仅供参考,有多种实现方法)
1. Triangle & Equilateral
1). 创建class Triangle 表示三角形,包含三个属性值:angle1、angle2、angle3;
类方法 check_angles():若三个角相加 == 180,return True;若不是,return False
class Triangle(object):
def __init__(self,angle1,angle2,angle3):
self.angle1 = angle1
self.angle2 = angle2
self.angle3 = angle3 def checkAngles(self):
if (self.angle1+self.angle2+self.angle3) == 180 :
return True
else:
return False t1 = Triangle(40,50,90)
print(t1.angle1,t1.angle2,t1.angle3)
print(t1.checkAngles())
t2 = Triangle(40,50,91)
print(t2.checkAngles())
Triangle
2). 创建class Equilateral 继承上例1的Triangle,表示等边三角形,同Triangle不同点在于,其属性值的三个角均为60;而对应的 check_angles() 自然始终返回True
class Equilateral(Triangle):
def __init__(self,angle1=60,angle2=60,angle3=60):
self.angle1 = angle1
self.angle2 = angle2
self.angle3 = angle3 t3 = Equilateral()
print(t3.angle1,t3.angle2,t3.angle3)
print(t3.checkAngles())
Equilateral 1
如上示例代码可满足条件,但 更好的做法 是调用父类构造函数,并重写check_angles() 使其始终返回 True,参见代码如下
class Equilateral(Triangle):
def __init__(self,angle1=60,angle2=60,angle3=60):
Triangle.__init__(self,angle1,angle2,angle3) def checkAngles(self):
return True t3 = Equilateral()
print(t3.angle1,t3.angle2,t3.angle3)
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"
class Car(object):
condition = "new"
def __init__(self,model,color,mpg):
self.model = model
self.color = color
self.mpg = mpg def displayCar(self):
print ("This is a {s.color} {s.model} car with {s.mpg} MPG.".format(s=self)) def driveCar(self):
self.condition = "used" car1 = Car("DeLorean", "silver", 88)
car1.displayCar()
print(Car.condition)
print(car1.condition)
car1.driveCar()
print(car1.condition)
Car
2). 创建class ElectricCar 继承 Car,新增一属性变量 battery_type;重写driveCar()函数,改变 condition = "like new"
class ElectricCar(Car):
def __init__(self,model,color,mpg,battery_type):
Car.__init__(self,model,color,mpg)
self.battery_type = battery_type def driveCar(self):
self.condition = "like new" car2 = ElectricCar("dd","Red",88,"molten salt")
print(car2.battery_type,car2.condition)
car2.displayCar() # 继承Car方法
car2.driveCar() # 调用重写后的方法
print(car2.condition)
ElectricCar
3. Point3D
创建class Point3D,表示三维坐标上的一个点,包含三个属性变量:x,y,z
类 __repr__ 方法显示为 (x,y,z)
类方法 distance() 返回改点距原点(0,0,0) 的距离
Python 类方法 __repr__ 重写 print class_name 时的显示,参考代码即可理解
import math
class Point3D(object):
def __init__(self,x,y,z):
self.x = x
self.y = y
self.z = z
def __repr__(self):
return ("({s.x},{s.y},{s.z})".format(s=self)) def distance(self):
d = math.sqrt(self.x**2+self.y**2+self.z**2)
return d point1 = Point3D(3,4,0)
print(point1)
print(point1.distance())
Point3D
4. Employee & PartTimeEmployee
1). 创建class Employee,包含成员变量hour_wage =20,构造函数包含属性变量:name;
类方法 calculateWage() 计算当天工钱,传参hours,return hours*hour_wage
class Employee(object):
hour_wage = 20
def __init__(self,name):
self.name = name def calculateWage(self,hours):
return self.hour_wage*hours Peter = Employee("Peter")
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
class PartTimeEmployee(Employee):
hour_wage=18
parttime_wage=15 def calculateWage(self,hours):
if hours>=8:
return self.hour_wage*hours
else:
return self.parttime_wage*hours May = PartTimeEmployee("May")
print(May.calculateWage(5))
print(May.calculateWage(8))
PartTimeEmployee
Python学习 —— 阶段综合练习二的更多相关文章
- Python学习 —— 阶段综合练习三
Python学习 —— 阶段综合练习三 综合之前文件与文件夹操作的学习,做以下实例练习:(建议先不要看代码,自己先试着写:代码仅供参考,有多种实现方法) 1. 目录文件遍历(二层目录结构) 1). ...
- Python学习 —— 阶段综合练习一
Python 阶段综合练习一 综合之前的函数.数据结构.流程控制等,做以下实例练习:(建议先不要看代码,自己先试着写:代码仅供参考,有多种实现方法) 1. 定义 is_Even 函数,传一 int 参 ...
- 《Python学习手册》(二)
<Python学习手册>(二) --类型和运算 数字 十六进制 八进制 二进制 0x 0o 0b hex() oct() bin() >>>int('10',2) 2 & ...
- Python学习之路 (二)爬虫(一)
Python基础 基础教程参考廖雪峰的官方网站https://www.liaoxuefeng.com/ 一."大数据时代",数据获取的方式 1. 企业生产的用户数据:大型互联网公司 ...
- python学习笔记之基础二(第二天)
1.编码转换介绍 unicode是最底层.最纯的,会根据终端的编码进行转化展示 一般硬盘存储或传输为utf-8(因为省空间.省带宽),读入内存中为unicode,二者如何转换 a = ' ...
- python学习笔记系列----(二)控制流
实际开始看这一章节的时候,觉得都不想看了,因为每种语言都会有控制流,感觉好像我不看就会了似的.快速预览的时候,发现了原来还包含了对函数定义的一些描述,重点讲了3种函数形参的定义方法,章节的最后讲述了P ...
- Python学习【第十二篇】模块(2)
序列化 1.什么是python序列化? 把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling 序列化就是将python的数据类型转换成字符串 反序列化就是将字符串转换成 ...
- Python学习(四十二)—— Djago-model进阶
一.QuerySet 可切片 使用Python 的切片语法来限制查询集记录的数目 .它等同于SQL 的LIMIT 和OFFSET 子句. Entry.objects.all()[:5] # (LIMI ...
- Python学习(三十二)—— Django之视图系统
转载自:http://www.cnblogs.com/liwenzhou/articles/8305104.html Django的View(视图) 一个视图函数(类),简称视图,是一个简单的Pyth ...
随机推荐
- TEC-2几条微指令的微码说明 & TEC-2微程序运行测试步骤
个人理解,不保证完全正确…… 给正在被何朝东虐的,以及将来会被何朝东虐的同胞们………… 祈祷软院赶快更新课程让下一代逃脱TEC-2魔爪,monitor里那1994的年份真是看得人一口老血…… 微码说明 ...
- yii2 GirdView使用全教程
开始GridView GridView主要是为了实现表格复用,尤其我们做后台的时候,你发现表单和表格占据了大部分页面,而表格的样式又是高度的统一,那么如果有这样一个挂件,传入数据集自动渲染表格该多好. ...
- WERTYU(UVa10082)
C++ 11 代码如下: #include<iostream> using namespace std; const char s[] = { "`1234567890-=QWE ...
- java.lang.ClassCastException: android.widget.ImageButton异常处理
在调程序时总是出现异常关闭的现象,log显示: 03-26 07:58:09.528: E/AndroidRuntime(398): Caused by: java.lang.ClassCastExc ...
- C++后台研发面试总结
前言: 从中秋到国庆这几天面试了几家公司,有大公司也有小公司,连续几天面试没有系统的整理整理,正好有时间系统的整理一下,好多考点牛客的大佬们都分享过了,虽然每个人的方向不相同,不过多看一些总能找到一些 ...
- 几道坑人的PHP面试题 试试看看你会不会也中招
这篇文章主要介绍了几道坑人的PHP面试题,试试看看你会不会也中招,这些题目都用了一些障眼法,需要你有一双火眼金睛哦,需要的朋友可以参考下 这几道题是在德问上看到的,感觉挺有意思,拿来给大家分享其中的陷 ...
- vue表格导出
inportexcel: function() { //兼容ie10哦! require.ensure([], () => { const { export_json_to_excel } = ...
- Linux的经典shell命令整理
Linux的经典shell命令整理 1.删除0字节文件find -type f -size 0 -exec rm -rf {} \; 2.查看进程按内存从大到小排列ps -e -o “%C : %p ...
- Hibernate 多对一注解
在前面学习了基于配置文件的多对一关系,而在实际的开发过程中我们更多的是使用注解去开发.在这里来简单学习一下基于注解的多对一关系. 1. 创建所需要的实体 注:这里需要特别注意的是,如果使用的是mysq ...
- 全景图从拍摄到 online
全景图从拍摄到 online Panorama, CSS3, Canvas, 3D 2015-11-04 拍摄设备 照片拼接 制作 3D Cube Demo 拍摄设备 电动自动全景云台 Gigapan ...