Follow up - Decide whether a triangle is isosceles or not Previous question: Decide whether a triangle is isosceles or not

Using the comments on the previous question (from people such as Carcigenicate, Luke Sawczak, dgnuff, alecxe and 200_success) I have revised the code and made an improved version but I'm sure that there is still more that I can do to improve it. (And while the calls to sleep and the 'print("")' may be unnecessary, I prefer to write my code with them to make the output look better).

import time

def askSideLength(sideMessage):
    while True:
        try:
            length = float(input("How long is the " + sideMessage + " side of the triangle? "))
            if length &lt;= 0.0:
                print("This is an impossible triangle!")
                time.sleep(0.5)
            else:
                return length
        except ValueError:
                print("That's not a number...")
                time.sleep(0.5)

def findTriangleType():
        if side1 == side2:
            print("This is an isosceles triangle!")
        elif side1 == side3:
            print("This is an isosceles triangle!")
        elif side2 == side3:
            print("This is an isosceles triangle!")
        elif side1 != side2 and side1 != side3:
            print("This is not an isosceles triangle!")
        elif side2 != side1 and side2 != side3:
            print("This is not an isosceles triangle!")
        elif side3 != side1 and side3 != side2:
            print("This is not an isosceles triangle!")

print("""I am going to ask you for three numbers.
These numbers can be integers or decimals.
They will be the sides of a triangle,
and I will tell you if it is an isosceles triangle or not.
""")
time.sleep(2.5)
side1 = askSideLength("first")
time.sleep(0.25)
side2 = askSideLength("second")
time.sleep(0.25)
side3 = askSideLength("third")
print("")
time.sleep(1)

semiSum = (side1 + side2 + side3) / 2.0
areaSquared = semiSum * (semiSum - side1) * (semiSum - side2) * (semiSum - side3)

if side1 == side2 == side3:
    print("""While this triangle is technically an isosceles triangle,
it is much more commonly known as an equilateral triangle.""")
elif areaSquared &lt;= 0.0:
    print("This is an impossible triangle!")
elif areaSquared &gt; 0.0:
    findTriangleType()
time.sleep(2.5)
Law of Excluded Middle

Something is either an isosceles triangle or it isn't. (This is a consequence of Law of Excluded Middle). Given this knowledge, as an exercise, what should you be able to eliminate from this code:

    if side1 == side2:
        print("This is an isosceles triangle!")
    elif side1 == side3:
        print("This is an isosceles triangle!")
    elif side2 == side3:
        print("This is an isosceles triangle!")
    elif side1 != side2 and side1 != side3:
        print("This is not an isosceles triangle!")
    elif side2 != side1 and side2 != side3:
        print("This is not an isosceles triangle!")
    elif side3 != side1 and side3 != side2:
        print("This is not an isosceles triangle!")


Don't sleep on me.

There really is no reason to write:

time.sleep(2.5)
side1 = askSideLength("first")
time.sleep(0.25)
side2 = askSideLength("second")
time.sleep(0.25)
side3 = askSideLength("third")
time.sleep(1)


The prompt will wait for the user to input the data, don't make the user wait.

Naming conventions

askSideLength for example should be converted to ask_side_length. We don't use the camelCase for functions and variables in Python. Instead we use snake_case.