三角区 - 蟒蛇27

时间:2013-01-30 15:41:51

标签: python python-2.7 sqrt

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

当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 个答案:

答案 0 :(得分:7)

公式正在运作;这是你的期望,有点偏。

  

2,3,5 0.00的输出是错误的。

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

并非三个数字的每个组合都可以作为三角形。您需要a+b>cb+c>ac+a>b。对于(2,3,6),你有

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

答案 1 :(得分:1)

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

案例1:

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

s=(2+3+5)/2.0
 = 5.00

你有area = sqrt(s *(s-a)(s-b)(s-c))

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

案例2:

a=2; b=3; c=6;

s=(2+3+6)/2.0
 = 5.50

就(s-c)而言,你有(5.50 - 6)= -0.5

负数的sqrt为您提供“数学域错误”

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

我希望它有帮助=]