Python学几何-三角形判断

本文介绍了一种基于边长和角度的三角形类型判别算法,包括等边、等腰、直角、钝角和锐角三角形的判断条件。通过Python实现,输入三角形三边长度,即可判断其类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三角形按边为:等边,等腰

等边:三条边相等;
等腰:两条边相等

三角形按角分为:直角,钝角,锐角

直角:两条短边的平方和=长边的平方和
钝角:两条短边的平方和<长边的平方和
锐角:任意两条边的平方和>第三条边的平方和

#判断三角形

def triangle(a,b,c):
    if a>0 and b>0 and c>0:
        if a+b>c and a+c>b and b+c>a:
            if a==b and b==c:
                print(a,b,c,"为等边三角形")
            elif a==b or a==c  or b==c:
                print(a,b,c,"为等腰三角形")
            elif a*a+b*b==c*c or a*a+c*c==b*b or b*b+c*c==a*a:
                print(a,b,c,"为直角三角形")
            elif a*a+b*b<c*c or a*a+c*c<b*b or b*b+c*c<a*a:
                print(a,b,c,"为钝角三角形")
            elif a*a+b*b>c*c or a*a+c*c>b*b or b*b+c*c>a*a:
                print(a,b,c,"为锐角三角形")

            else:
                print(a,b,c,"这是不规则三角形")
        else:
            print(a,b,c,"这不是三角形")
    
while input("请输入任意字符开始!,按回车结束"):
    
    a=input("请输入三角形第1边:")
    b=input("请输入三角形第2边:")
    c=input("请输入三角形第3边:")
    triangle(int(a),int(b),int(c))
    
print("结束!")
这是一个经典的编程问题,目的是判断给定的三条边长是否能构成一个三角形。在几何中,任意两边之和大于第三边是构成三角形的基本条件。 ### 判断依据: 对于三边分别为 a、b 和 c 的情况,若满足以下三个不等式,则可以构成三角形: 1. \(a + b > c\) 2. \(a + c > b\) 3. \(b + c > a\) 只要有一个不成立,则无法形成有效三角形。 ### 实现步骤: 1. 接收用户输入的三个数值作为潜在的三角形三边长度; 2. 检查这三项是否都为正数(因为负数或零不可能成为边长); 3. 验证上述提到的所有组合是否全部满足“两短边长大于最长边”原则; 4. 输出结论——告知能否组成三角形; 下面提供了一个基于 Python 的解决方案示例: ```python def can_form_triangle(a, b, c): if a <= 0 or b <= 0 or c <= 0: return False # 边长应为正值 sides = sorted([a,b,c]) # 对边进行排序得到最小值中间值最大值 return sides[0]+sides[1]>sides[2] # 测试代码部分 try: side_a = float(input("请输入第一条边长: ")) side_b = float(input("请输入第二条边长: ")) side_c = float(input("请输入第三条边长: ")) if(can_form_triangle(side_a ,side_b ,side_c)): print('能够构成三角形') else : print('不能够构成三角形') except ValueError as e: print('无效输入,请确保您输入的是数字.') ``` 此段程序首先定义了检查函数 `can_form_triangle`, 它接受三个参数表示各条边,并返回布尔值指示它们是否有可能构造出有效的平面图形 - 即我们的目标物:三角形. 然后,在主程序里请求使用者分别键入每一边的具体尺寸再传送给该判定方法得出最后的答案同时考虑到了异常状况例如非数字化字符或者其他非法形式的数据导致错误的情况加以防护避免崩溃退出情形发生保证良好的用户体验感.
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

索菲亚李

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值