题目描述:根据输入的三角形的三条边a、b、c,如果可以构成三角形,计算并输出该三角形的
面积和周长,否则输出“NotaValidTriangle”。
输入格式:在一行中输入为3个正整数,分别代表三角形的3条边a、b、c,整数之间用逗号“,”
隔开。提示:a,b,c=eval(input())
输出格式:如果输入的边能构成一个三角形,则在一行中输出两个实数,分别表示该三角形的面
积和周长,两实数之间用空格隔开并保留2位小数;输入的边不能构成一个三角形,则输出一个字符
串“NotaValidTriangle”。
输入输出样例1:
输
入
输
出
5,5,3
7.1513.00
输入输出样例2:
输
入
输
出
1,8,2
NotaValidTriangle
a, b, c = eval(input())
# 计算半周长
s = (a + b + c) / 2
# 计算面积
area = (s * (s - a) * (s - b) * (s - c)) ** 0.5
if s * (s - a) * (s - b) * (s - c) <= 0: # 面积<=0不是三角形
print("NotaValidTriangle")
else:
print(area, s * 2)
望采纳
import math
from decimal import Decimal
if name == "main":
a, b, c = eval(input())
a, b, c = Decimal(a), Decimal(b), Decimal(c)
# 判断是否可以构成一个三角形,任何两边之和大于第三边
if a + b > c and a + c > b and b + c > a:
# 取最长边
tmpList = [a, b, c]
maxLine = max([a, b, c])
# 另外两条边为
tmpList.remove(maxLine)
tmpList.reverse()
line1, line2 = tmpList
heigh = (line1*line1 + maxLine*maxLine - line2*line2) / (2*maxLine)
heighReal = math.sqrt(line1*line1 - ((line1*line1 + maxLine*maxLine - line2*line2) / (2*maxLine))*((line1*line1 + maxLine*maxLine - line2*line2) / (2*maxLine)))
print(a+b+c)
print(Decimal("0.5") * Decimal(str(maxLine)) * Decimal(str(heighReal)))
else:
print("Not a Valid Triangle")