程序设置为计算三角形的面积。三角形边(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()
你能看出什么问题吗?
答案 0 :(得分:7)
公式正在运作;这是你的期望,有点偏。
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 :(得分: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为您提供“数学域错误”
以上结果表明这些数字不能形成合法的三角形。您的代码或公式没有任何问题。但是,在下次测试代码之前,请确保您的测试用例是合法的。
我希望它有帮助=]