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 ...
随机推荐
- python和shell间变量互相传递
Python -> shell: 参考文章 1.环境变量 import os var=123或var=’123’ os.environ[’var’]=str(var) #environ的键值必须 ...
- VS 关于 .sln 文件和 .suo 文件
VS 关于 .sln 文件和 .suo 文件 Visual Studio.NET采用两种文件类型(.sln和.suo)来存储特定于解决方案的设置,它们总称为解决方案文件.为解决方案资源管理器提供显示 ...
- 【SQL SERVER】T-SQL 字符串前加 N 是什么意思
比如 select @status = N'stopped' 那么其中的字符串 stopped 前面为什么要加 N 呢?而且我们发现有些地方加 N 与否都没有影响,有些地方又必须加 N. N 在这里表 ...
- esxi上引起vm绑定浮动IP无法和外面通信
在vmware esxi环境通过创建VM安装完成openstack之后,发现创建Instance后网络不通,经过多方面排查,最后确定是vmware esxi标准交换机拒绝“混杂模式”所致,故打开“混杂 ...
- Vue 2.0学习(四)计算属性
{{}}模板内的表达式常用于简单的运算,当运算过长或逻辑复杂时,会难以维护. <div> {{ text.split(',').reverse().join('') }} </div ...
- 【BZOJ 4180】 4180: 字符串计数 (SAM+二分+矩阵乘法)
4180: 字符串计数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 164 Solved: 75 Description SD有一名神犇叫做Oxe ...
- HDU 6118 度度熊的交易计划(费用流)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=6118 [题目大意] 给出一张无向边权图,每个点最多可以生产b[i]商品,每件代价为a[i], 每个 ...
- 较有意思的Apple XSS(CVE-2016-7762)漏洞
文章作者:Avfisher0x00 前言应CVE作者的要求帮忙分析一下这个漏洞,实际上这是一个思路比较有意思的Apple XSS(CVE-2016-7762).漏洞作者确实脑洞比较大也善于尝试和发掘, ...
- 69.广搜练习: 最少转弯问题(TURN)
[问题描述] 给出一张地图,这张地图被分为n×m(n,m<=100)个方块,任何一个方块不是平地就是高山.平地可以通过,高山则不能.现在你处在地图的(x1,y1)这块平地,问:你至少需要拐几个弯 ...
- Tarjan 算法详解
一个神奇的算法,求最大连通分量用O(n)的时间复杂度,真实令人不可思议. 废话少说,先上题目 题目描述: 给出一个有向图G,求G连通分量的个数和最大连通分量. 输入: n,m,表示G有n个点,m条边 ...