Python三角形判断代码报错illegal target for variable annotation求解
解决三角形类型判断代码的语法错误及逻辑问题
原代码存在的问题
- 语法错误:
else块后直接使用elif是非法的,Python不允许这种结构。else作为if的分支,不能衔接elif,正确的多分支应为if -> elif -> elif -> else的链式结构。 - 三角形构成条件错误:原判断
a>(b+c) or b>(a+c) or c>(a+b)不准确,有效三角形要求任意两边之和严格大于第三边,因此无法构成的条件是任意一边大于等于另外两边之和。 - 浮点数精度隐患:通过
pow计算平方根再判断相等,会引入浮点数精度误差,导致本应成立的直角三角形判断失败。改用整数平方比较可完全避免这个问题。 - 判断顺序不合理:原代码先判断直角三角形再判断等边三角形,虽不影响结果,但逻辑上应优先判断更特殊的等边三角形,再处理直角三角形。
修正后的代码
a = int(input()) b = int(input()) c = int(input()) if a >= b + c or b >= a + c or c >= a + b: print("Triangle cannot be formed") elif a == b and b == c: print("Equilateral Triangle") elif a**2 + b**2 == c**2 or a**2 + c**2 == b**2 or b**2 + c**2 == a**2: print("Right Triangle") else: print("Normal Triangle")
代码逻辑说明
- 输入三条边并转换为整数类型。
- 首先判断是否无法构成三角形:若任意一边大于等于另外两边之和,输出对应提示。
- 接着判断等边三角形:三条边长度完全相等时输出对应类型。
- 然后判断直角三角形:验证任意两边的平方和是否等于第三边的平方(整数运算无精度问题)。
- 剩余情况均为普通三角形,输出对应提示。
内容的提问来源于stack exchange,提问作者ansh kumar
相关产品推荐
相关产品推荐

