三角形判断是Python入门最经典的逻辑练习题,几乎每个初学者都会练到。看似简单,但很多人写代码都会出错,要么分类混乱,要么判断条件写错。
今天我用纯新手的理解方式,讲清楚等边、等腰、直角、普通锐/钝角三角形的判断原理,搭配完整可运行代码,逻辑通俗易懂,零基础也能看懂。
一、先搞懂基础前提
不管判断哪种三角形,都要先满足两个基础条件,不满足就直接构不成三角形:
1. 三条边长必须全部大于0,负数和0都不能做边长;
2. 任意两边之和大于第三边。
这里提醒大家一个重点:判断顺序很重要,必须先特殊、后普通,不然很容易出现判断重叠、结果出错的问题。
二、四种三角形判断原理
1. 等边三角形
判定条件最简单:三条边长度完全相等,代码直接用 a == b == c 判断。
等边三角形是最特殊的三角形,所以要放在第一个判断。只要判定是等边,就不用再判断其他类型。
2. 等腰三角形(排除等边)
判定条件:任意两条边相等,且不是等边三角形。
这是新手最容易踩的坑!如果先判断等腰,等边三角形会被误判成等腰。所以必须放在等边之后判断,只判定“只有两条边相等”的三角形。
3. 直角三角形
判定条件:满足勾股定理 $$a^2+b^2=c^2$$,注意c必须是最长边(斜边)。
我们写代码时,先把三条边从小到大排序,固定最长边。同时因为输入小数会有计算精度误差,不用绝对等于,用极小值容错,结果更准确。
4. 普通锐角/钝角三角形
排除上面三种特殊情况,剩下三边都不相等的就是普通三角形。
依旧以最长边为依据:两条短边的平方和大于最长边平方,是锐角三角形;小于最长边平方,就是钝角三角形。
三、完整可运行代码
这段代码是纯入门写法,逻辑清晰、没有复杂语法,适合新手练习和作业使用:
代码
# 输入三条边长
a = float(input("请输入第一条边长:"))
b = float(input("请输入第二条边长:"))
c = float(input("请输入第三条边长:"))
# 判断边长是否合法
if a <= 0 or b <= 0 or c <= 0:
print("边长不合法,无法构成三角形")
# 判断是否可以构成三角形
elif not (a + b > c and a + c > b and b + c > a):
print("无法构成三角形")
else:
print("可以构成三角形")
# 对三边排序,方便后续判断
min_side, mid_side, max_side = sorted([a, b, c])
# 按优先级判断三角形类型
if a == b == c:
print("该三角形为:等边三角形")
elif a == b or a == c or b == c:
print("该三角形为:等腰三角形")
elif abs(min_side**2 + mid_side**2 - max_side**2) < 1e-6:
print("该三角形为:直角三角形")
elif min_side**2 + mid_side**2 > max_side**2:
print("该三角形为:普通锐角三角形")
else:
print("该三角形为:普通钝角三角形")
四、新手总结 + 小拓展
其实三角形判断这道题,根本没有复杂语法,核心就是捋清判断顺序、避开逻辑坑点。只要记住:先校验合法性,再从最特殊的等边、等腰,到直角、普通三角形依次判断,基本不会出错。
很多新手写完基础代码就以为学懂了,但其实这道题还有很多进阶玩法!比如防止输入文字报错、循环多次判断、精简代码写法,都是考试和练习的加分亮点。
想要进阶优化版代码、或者更多Python入门经典练习题?可以留言告诉我,后续持续更新新手友好的编程干货!