R7-2 输入三角形三边长,求三角形面积(高教社,《Python编程基础及应用》习题3-8)

问题遇到的现象和发生背景
运行结果及报错内容
我的解答思路和尝试过的方法

帮看看吧
R7-2 输入三角形三边长,求三角形面积(高教社,《Python编程基础及应用》习题3-8)
分数 10

编程序实现功能:输入三角形的三条边边长,求三角形面积,其中面积计算使用用户自定义函数实现。
输出的面积保留两位小数。

输入格式:
边长1

边长2

边长3

输出格式:
当三条边可能构成合法的三角形时,输出应为:

面积
当三条边无法构成合法的三角形时,输出:

数据错误
输入样例:
3
4
5
输出样例:
6.00
提示:面积计算可使用海伦公式;两边之和大于第3边;两边之差小于第3边。

我写的不能全对
import math
a = float(input(""))
b = float(input(""))
c = float(input(""))
if a+b>c or a+c>b or b+c>a:
length = a + b + c
p = length/2
area = math.sqrt(p*(p-a)(p-b)(p-c))
print(format(area,'.2f'))
else:
print("数据错误")

两点地方,判断这儿你应该用and,因为两边之和大于第三边的是所有两边加起来都大于第三边才能组合成三角形,所以要用and,还有就是计算哪儿两个括号之间没有运算符*,这不是数学里面直接放在一起就是乘,还是的用运算符


import math
a = float(input(""))
b = float(input(""))
c = float(input(""))
if a+b>c and a+c>b and b+c>a:
    length = a + b + c
    p = length/2
    area = math.sqrt(p*(p-a)*(p-b)*(p-c))
    print(format(area,'.2f'))
else:
    print("数据错误")

a+b>c and a+c>b and b+c>a 三个条件要同时成立,要用and不是or

以下代码比较精练, 周长>2倍的最长边,只要一个条件即可判断,不必判断三个条件
另外 开平方也不用导入math库 , sqrt(n) == n**0.5即可

a,b,c = s = eval(input('输入三角形三边长,有逗号隔开:'))
p = sum(s)/2.0
if p > max(s):
    S = (p*(p-a)*(p-b)*(p-c))**0.5
    print(f'{S:.2f}')
else:
    print("数据错误")