python math domain error - sqrt
Question: What causes the problem?

    
    
    from math import sqrt
    print "a : "
    a = float(raw_input())
    print "b : "
    b = float(raw_input())
    print "c : "
    c = float(raw_input())
    d = (a + b + c)/2
    s = sqrt(d*(d-a)*(d-b)*(d-c))
    print "a+b+c =", a, b, c
    print "Distr. =", d*2, "Area =", s
    

Error:

    
    
    Traceback (most recent call last):
       File "C:/Python27/fájlok/háromszög terület2.py", line 11, in <module>
           s = sqrt(d*(d-a)*(d-b)*(d-c))
    ValueError: math domain error
    


Answer: The problem is that the [Heron's
formula](http://en.wikipedia.org/wiki/Heron%27s_formula) holds good only when
the sum of the two numbers are greater than the third. You need to check that
explicitly.

A better way as you are using a code to do that is by using _Exception
handling_

    
    
    try:
        s = sqrt(d*(d-a)*(d-b)*(d-c))
        print "a+b+c =", a, b, c
        print "Distr. =", d*2, "Area =", s
    except ValueError:
        print "Please enter 3 valid sides"
    

If you want to do it without `try` block you can do it as

    
    
    delta = (d*(d-a)*(d-b)*(d-c))
    if delta>0:
        s = sqrt(delta)
        print "a+b+c =", a, b, c
        print "Distr. =", d*2, "Area =", s
    else:
        print "Please enter 3 valid sides"
    

