三角形的面积-python 27

三角形的面积-python 27,python,python-2.7,sqrt,Python,Python 2.7,Sqrt,该程序设置为计算三角形的面积。三角形边(a、b、c)是一个输入。该代码仅适用于认证编号,而不适用于其他编号。例如 当a、b和c分别为: 2,3,4代码正常。 2,3,5输出为0.00,这是错误的。 2,3,6程序打印一个数学域错误 def main(): print "Program calculates the area of a triangle." print a, b, c = input("Enter triangle's sides length: ")

该程序设置为计算三角形的面积。三角形边(a、b、c)是一个输入。该代码仅适用于认证编号,而不适用于其他编号。例如

当a、b和c分别为: 2,3,4代码正常。 2,3,5输出为0.00,这是错误的。 2,3,6程序打印一个数学域错误

def main():
    print "Program calculates the area of a triangle."
    print
    a, b, c = input("Enter triangle's sides length: ")
    s = (a+b+c) / 2.0
    area = sqrt(s*(s-a)*(s-b)*(s-c))
    print "The area is %.2f" % area

main()

你能看出怎么了吗

公式正在运行;是你的期望有点偏离了

2,3,5输出为0.00,这是错误的

真的吗?你能画一个边长为2、3和5的三角形吗?:^) 唯一的可能是一个退化三角形——一条线(一个2英寸的线段连接到一个3英寸的线段),显然它的面积为零

并非所有三个数字的组合都是三角形。你需要有
a+b>c
b+c>a
c+a>b
。对于(2,3,6),您有


3+6>2
6+2>3
,但是
2+3<6
,所以没有这样的三角形。

您的代码似乎是合法的,让我们看看您的数学测试案例:

案例1:

a=2; b=3; c=5;

s=(2+3+5)/2.0
 = 5.00
a=2; b=3; c=6;

s=(2+3+6)/2.0
 = 5.50
面积=sqrt(s*(s-a)(s-b)(s-c))

见公式中有(s-c),结果是(5.00-5)=0 在这种情况下,面积=0.00,这是正确的

案例2:

a=2; b=3; c=5;

s=(2+3+5)/2.0
 = 5.00
a=2; b=3; c=6;

s=(2+3+6)/2.0
 = 5.50
就(s-c)而言,你有(5.50-6)=-0.5

负数的sqrt表示“数学域错误”

上述结果表明,这些数字不能形成合法的三角形。您的代码或公式没有问题。但是,在下次测试代码之前,请确保您的测试用例是合法的


我希望这会有帮助=]

谢谢你。公式在我正在读的书中。为什么对于2,3,5,输出是0.00?当rour s变量,称为半周长,与三角形边之一的长度相同时,得到零。例如,(2+3+5)/2=5,然后
(s-c)
项将为零。