开发者学堂课程【Python 入门 2020年版:作业讲解1】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/639/detail/10398
作业讲解1
内容简介
一、 作业
1. 设计两个类
2. 写一个计算器类,可以加、减、乘、除计算
3.创建一个 python 类,添加一个类字段用来统计 python 类的对象的个数
一、作业
哪些地方有问题,需要大家思考,这个作业不是特别难
1.#设计两个类:
#-一个点类,属性包括 x,y 坐标。
#-一个 Rectangle (矩形),属性,有左上角和右下角的坐标,
#方法:
1.计算矩形的面积
2.判断点是否在矩形内
#实例化一个点对象,一个矩形对象,输出矩形的面积,输出点是否在矩形内
首先要定义一个类,点类,有俩个属性,一个 x,一个 y
class point(object):
def_init_(self,x,y):
Self.x=x
Self.y=y
Class rectangle(object):
def_init_(self,top_left,bottom_right)
Pass
P=point(2,5)
#point方法在创建时,需要两个 int类型的参数,用来表示 x,y 坐标
def__init__(self,x:int,y:int):
/int的意思就是创建 point,需要俩个 int 类型的变量/
self.x=x
self.y=y
坐标系图:
用任意一个地方画一个点,这个点有 x轴坐标,还有 y轴的坐标,x,y都是数字类型,可以是整数,也可以是负点数
矩形的类:(矩形就是平行直角四边形)
class Rectangle(object):
def__init__(self,top_left:point,bottom_right:point):
self.top_left=top_left
self.bottom_right=bottom_right
def get_area(self):
#面积:长*宽
length=abs(self.bottom_right.x-self.top_left.x)
width=abs(self.top_left.y-self.bottom_right.y)
return length*width
def is_inside(self,point):
# if self.bottom_right.x>=point.x>=self.top_left.x and self.top_left.y>=point.y>=self.bottom_right.y
# return True
#else:
# return False
return self.bottom_right.x>=point.x>=self.top_left.x and self.top_left.y>=point.y>=self.bottom_right.y
p1=point(4,20) #定义左上角的点
p2=point(30,8) #定义右下角的点
r=Rectangle(p1,p2) #把左上角和右下角的点传递给矩形
print(r.get_area()) #12*26
运行结果:出现了矩形的面积312
判断点是不是在矩形里面:
x值大于左上角 x值,小于右下角的 x值;y值要大于右下角的 y值,小于左上角的 y值,说明点在里面。
p=point(10,13)
print(r.is_inside(p)) 运行结果正常
如 p=point(20,30) 运行结果不在范围内
想判断多个点:
x=point(20,20)
print(r.is_inside(x))
坐标系图:
左上角的点和右下角的点,为了计算方便,设置为整数。这俩个点是 point类型的数据。
点和矩形的关联在于,矩形左上角和右下角的数据,是一个 point类型的数据。
2. 写一个计算器类,可以加、减、乘、除计算
class Calculator(object):
def add(self,a,b):
return a+b
c=Calculator()
#有必要创建一个实例对象吗?
print(c.add(4,5))
运行结果是9
简化写法:
class Calculator(object):
@staticmethod
def add(a,b):
return a+b
And里面有 self对象,c创建出了一个实例对象,其实这个实例对象没有必要创建。
上面要创建实例对象是因为函数里面要用到实例对象,c创建了没有用到它。
3.创建一个 python类,添加一个类字段用来统计 python类的对象的个数
在 init方法或者在 new方法里面加一个 count,每次创建一个对象就加一个。