用python判断三角形的形状
# coding:utf-8 class point: def __init__(self,x,y,name): self.x = x self.y = y self.name = name '''两点距离公式''' def distance(self,p2): self.d=((self.x-p2.x)**2+(self.y-p2.y)**2)**0.5 return self.d '''获取两点距离''' def getd(self,p2): self.distance(p2) print('点 ({},{}) 与 ({},{}) 的距离是 {} '.format(self.x,self.y,p2.x,p2.y,self.d)) '''判断这三点能否形成一个三角形''' def istriangle(self,p2,p3): self.l_list=[] self.l_list.append(self.distance(p3)) self.l_list.append(p2.distance(p3)) self.l_list.append(self.distance(p2)) '''线段长度由小到大排序''' self.l_list.sort() if (self.l_list[0]+self.l_list[1]>self.l_list[2]) and (self.l_list[1]+self.l_list[2]>self.l_list[0]) and (self.l_list[2]+self.l_list[0]>self.l_list[1]):#长度判断 return '能构成三角形' else: return '不能构成' '''判断是哪种三角形''' def whichtriangle(self,p2,p3): result=self.istriangle(p2,p3) if result=='不能构成': return print('所以点',self.name,p2.name,p3.name,'无法构成一个三角形') if self.l_list[0]**2+self.l_list[1]**2>self.l_list[2]**2:#锐角三角形 print('所以点',self.name,p2.name,p3.name,'能构成一个锐角三角形') elif self.l_list[0]**2+self.l_list[1]**2==self.l_list[2]**2:#直角三角形 print('所以点',self.name,p2.name,p3.name,'能构成一个直角三角形') elif self.l_list[0]**2+self.l_list[1]**2<self.l_list[2]**2:#钝角三角形 print('所以点',self.name,p2.name,p3.name,'能构成一个钝角三角行') if __name__ == '__main__': '''第一组输入''' try: p1 = point(0, A, 'p1') #输入坐标点P1的x,y坐标及点的名字 p2 = point(1, 3, 'p2') #输入坐标点P2的x,y坐标及点的名字 p3 = point(9, 7, 'p3') #输入坐标点P3的x,y坐标及点的名字 p1.getd(p2) #计算点p1与p2的距离,也就是三角形的一条边 p2.getd(p3) #计算点p2与p3的距离,也就是三角形的一条边 p3.getd(p1) #计算点p3与p1的距离,也就是三角形的一条边 p1.whichtriangle(p2, p3) #任意2边的平方之和与第三边平方做比较,大于是锐角,等于是直角,小于是钝角 print() #输入结果之间加一个空行 except: print("输入的值错误")
墨者看遍天下皆是丹青,测试看尽万物皆是bug