描述
KiKi想知道已经给出的三条边a,b,c能否构成三角形,如果能构成三角形,判断三角形的类型(等边三角形、等腰三角形或普通三角形)。
输入描述:
题目有多组输入数据,每一行输入三个a,b,c(0<a,b,c<1000),作为三角形的三个边,用空格分隔。
输出描述:
针对每组输入数据,输出占一行,如果能构成三角形,等边三角形则输出“Equilateral triangle!”,等腰三角形则输出“Isosceles triangle!”,其余的三角形则输出“Ordinary triangle!”,反之输出“Not a triangle!”。
示例1
输入:
2 3 23 3 3
输出:
Isosceles triangle!Equilateral triangle!
解答:
triangle_date = []
while len(triangle_date) < 1:
try:
triangle_date.append(input())
except:
break
def triangle_compute(a, b, c):
"""
三角形判断
:param a:
:param b:
:param c:
:return: 1 三角形 -1 非三角形
"""
if (a <= 0 or b <= 0 or c <= 0) or (a >= 1000 or b >= 1000 or c >= 1000):
# 加入题目的限制条件
return -1
else:
if a + b > c and a - b < c:
return 1
elif b + c > a and b - c < a:
return 1
elif c + a > b and c - a < b:
return 1
else:
return -1
for i in triangle_date:
a, b, c = map(float, i.split(" "))
x = triangle_compute(a, b, c)
if x == 1 and (a == b and b == c):
print("Equilateral triangle!")
elif x == 1 and (a == b or b == c or c == a):
print("Isosceles triangle!")
elif x == 1:
print("Ordinary triangle!")
elif x == -1:
print("Not a triangle!")
else:
print("Process Error!")
解析:
1.知晓三角形判定公式,三边大于0,两边之和大于第三边,两边之差小于第三边。
2.考虑下数字类型的输入。
3.易错点:and和or连接判断时,尽量加括号,保证计算不出现逻辑错误。
20211124