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 ...
随机推荐
- MVC – 7.Razor 语法
7.1 Razor视图引擎语法 Razor通过理解标记的结构来实现代码和标记之间的顺畅切换. @核心转换字符,用来 标记-代码 的转换字符串. 语境A: @{ string rootName=&quo ...
- IEEEXtreme 10.0 - Game of Stones
这是 meelo 原创的 IEEEXtreme极限编程大赛题解 Xtreme 10.0 - Game of Stones 题目来源 第10届IEEE极限编程大赛 https://www.hackerr ...
- day1 str字符串常用方法
字符串是编程中常用的类型,字符型在内存中是以单个形式存储的,比如name = "alex",在内存中存储的形式为["a","l"," ...
- 2017 计蒜之道 初赛 第五场 B. UCloud 的安全秘钥(简单)
暴力. 暴力枚举$S$串的每一个长度为$m$的子串,排序判断即可. #include <iostream> #include <cstdio> #include <cst ...
- SCU 4442 Party
二分图的最小点权覆盖. 非常感谢巨巨@islands_的解答,还帮我画了一个图. 题目保证给出的边构成的图是一个二分图. 如果没有第三种类型的$frog$,那么问题就很简单了.即选择哪些点,覆盖住所有 ...
- LibreOJ#143 质数判定 [Miller_Rabin]
题目传送门 质数判定 题目描述 判定输入的数是不是质数. 输入格式 若干行,一行一个数 x. 行数不超过 $1.5\times 10^4$ 输出格式 对于输入的每一行,如果 x是质数输出一行 Y,否则 ...
- HDU 6052 To my boyfriend(概率 贡献)
To my boyfriend Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- 虚拟环境中pip install requirments.txt: Cannot fetch index base URL https://pypi.python.org/simple/
Stackoverflow : http://stackoverflow.com/questions/15501133/python-pip-error-cannot-fetch-index-bas ...
- python统计文本中每个单词出现的次数
.python统计文本中每个单词出现的次数: #coding=utf-8 __author__ = 'zcg' import collections import os with open('abc. ...
- manacher算法求最长回文子序列
一:背景 给定一个字符串,求出其最长回文子串.例如: s="abcd",最长回文长度为 1: s="ababa",最长回文长度为 5: s="abcc ...