用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("输入的值错误")

  

posted @ 2022-05-20 14:57  sriver_dl  Views(520)  Comments(0Edit  收藏  举报