python中关于求三角形角度,面积等问题

利用input输入,要求输入学号和班级,并分解成三个坐标点,如2112001057, 对应的x1=21,y1=12, x2= 00,y2=10,x3=57,y3=班级如03。

利用以上坐标(x1, y1), (x2, y2), (x3, y3),

(1)计算三角形的面积

(2)计算三角形三个夹角

(3)判断三角形类型(钝角三角形、直角三角形和锐角三角形、等边三角形和等腰三角形)

格式化输出以上内容:

坐标(x1, y1), (x2, y2), (x3, y3)的面积是xxxx,

三个夹角分别为XX.xx度,XX.xx度,XX.xx度,

为钝角/直角/锐角、等边/等腰三角形。

注:如无法构成三角形,请输出理由。

import math
no_class = input("请输入学号班级纯数字代称:")
x1 = int(no_class[:2])
y1 = int(no_class[2:4])
x2 = int(no_class[4:6])
y2 = int(no_class[6:8])
x3 = int(no_class[8:10])
y3 = int(no_class[10:12])

def triangle():

    a = (x1**2+y1**2)**0.5
    b = (x2**2+y2**2)**0.5
    c = (x3**2+y3**2)**0.5

    if a+b>c and b+c>a and a+c>b:

        p = (a + b + c) / 2
        area = (p*(p-a)*(p-b)*(p-c))**0.5
        print("坐标(%d,%d),(%d,%d),(%d,%d)的面积为%f" % (x1,y1,x2,y2,x3,y3,area))
        A = math.degrees(math.acos((b*b+c*c-a*a)/(2*b*c)))
        B = math.degrees(math.acos((a*a+c*c-b*b)/(2*a*c)))
        C = math.degrees(math.acos((a*a+b*b-c*c)/(2*a*b)))
        print("三个夹角分别为%.2f度,%.2f度,%.2f度" % (A,B,C))
        if A < 90 and B <90 and C < 90:
            print("三角形为锐角三角形")
            if A == B == C:
                print("三角形为等边三角形")
            else:
                pass
        elif A == 90 or B == 90 or C == 90:
            print("三角形为直角三角形")
            if (A == B !=C) or (B == C != A) or (A == C !=B):
                print("三角形为等腰三角形")
            else :
                pass
        else:
            print("三角形为钝角三角形")
            if (A == B !=C) or (B == C != A) or (A == C !=B):
                print("三角形为等腰三角形")
            else :
                pass
    else:
        if a + b < c :
            print("无法构成三角形 a + b < c")
        elif b + c < a:
            print("无法构成三角形 b + c < a")
        else:
            print("无法构成三角形 a + c < b")

triangle()

下面这个无法构成的理由感觉少点什么,如果有大神知道可以相告,那就更好了。

python小白如果有什么写的不对,直接打在评论区就好啦。谢谢大家支持!

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值