2、练习 题:
题目1:
定义一个类Triangle用来表示三角形
定义初始化方__init__法接收三个点作为参数
(点可以用二元元组来表示,也可以使用课堂上的Point类的实例来表示,注意判断是否三个点不同)
定义方法isosceles用来判断三角形是否是等腰三角形,输出True 或False(提示,计算三个点的距离,有两个距离相等就是等腰三角形)
定义方法is_equal_sides用来判断三角形是否等边三角形,输出True或False(提示,计算三个点的距离,三个距离相等)
实例化2个对象
代码如下:
import math # 定义一个 坐标点 类 class Point: def __init__(self, x, y): self.x = x self.y = y # 定义一个三角形类 class Triangle: def __init__(self, point1, point2, point3): self.point1 = point1 self.point2 = point2 self.point3 = point3 # 判断三点是否为同一个点 def is_different_points(self): x1 = self.point1.x x2 = self.point2.x x3 = self.point3.x y1 = self.point1.y y2 = self.point2.y y3 = self.point3.y if x1 == x2 == x3 and y1 == y2 == y3: print('\n三点为同一个点,不能构成三角形') return False else: print('\n三点不为同一个点') p1_p2 = math.sqrt((x1-x2)**2 + (y1-y2)**2) p1_p3 = math.sqrt((x1-x3)**2 + (y1-y3)**2) p2_p3 = math.sqrt((x2-x3)**2 + (y2-y3)**2) return p1_p2, p1_p3, p2_p3 # 判断等腰三角形 def isosceles(self): points_tuple = self.is_different_points() if points_tuple: x = points_tuple[0] y = points_tuple[1] z = points_tuple[2] if (x + y > z) and (x + z > y) and (y + z > x): if x == y or x == z or y ==z: print('等腰三角形') return True else: print('一般三角形') return False else: print('任意两边之和没有大于第三遍,不能构成三角形') return False # 判断等边三角形 def is_equal_sides(self): points_tuple = self.is_different_points() if points_tuple: x = points_tuple[0] y = points_tuple[1] z = points_tuple[2] if (x + y > z) and (x + z > y) and (y + z > x): if x == y == z : print('等边三角形') return True else: print('不是等边三角形') return False else: print('任意两边之和没有大于第三遍,不能构成三角形') return False # 等腰三角形 # 1、先实例化 3个点 p1 = Point(0, 0) p2 = Point(-2, 2) p3 = Point(2, 2) # 再实例化一个三角形 t = Triangle(p1, p2, p3) t.isosceles() t.is_equal_sides() print('\n========= 实例化第二个三角形 ==========') # 2、等边三角形 # 先实例化 3个点 p1 = Point(0, -6) p2 = Point(0, 6) p3 = Point(-6*math.sqrt(3), 0) # 再实例化一个三角形 t = Triangle(p1, p2, p3) t.isosceles() t.is_equal_sides() print('\n========= 实例化第三个三角形 ==========') # 2、3点为同一个点 # 先实例化 3个点 p1 = Point(1, 1) p2 = Point(1, 1) p3 = Point(1, 1) # 再实例化一个三角形 t = Triangle(p1, p2, p3) t.isosceles() t.is_equal_sides()
执行结果如下:
D:\SkyWorkSpace\WorkSpace\Pytest\Temp\day09\venv\Scripts\python.exe D:/SkyWorkSpace/WorkSpace/Pytest/Temp/day09/test_05/py43-day12-sky-20210818.py 三点不为同一个点 等腰三角形 三点不为同一个点 不是等边三角形 ========= 实例化第二个三角形 ========== 三点不为同一个点 等腰三角形 三点不为同一个点 等边三角形 ========= 实例化第三个三角形 ========== 三点为同一个点,不能构成三角形 三点为同一个点,不能构成三角形 Process finished with exit code 0