Q:

What is wrong with this code that calculates areas, please? (Python)

Hello, 
I am new to python. And I do not know why this code does not work:
def area_finder_rectangle (height,width):
    area = height*width
    print("The area of your polygon is %.2f" % area)

def area_finder_triangle (height,width):
    area = (height*width)*0.5
    print("The area of your polygon is %.2f" % area)

while True:

    print ("Choose the polygon that you want to calculate the area from.")
    print ("Polygons supported: rectangle, triangle")
    value = str(input("Your polygon is a: "))
    print ("Be sure to include decimals even if you are going to input an integer")

    if value == "rectangle" or "Rectangle":

        heightt = float(input("Enter height: "))
        widthh = float(input("Enter width: "))
        area_finder_rectangle (height = heightt,width = widthh)

    elif value == "triangle" or "Triangle":
        heightt = float(input("Enter height: "))
        widthh = float(input("Enter width: "))
        area_finder_triangle (height = heightt,width = widthh)

    print ("")

When you choose rectangle is just fine, but when you choose triangle, this happens: 

    >>>
    Choose the polygon that you want to calculate the area from.
    Polygons supported: rectangle, triangle
    Your polygon is a: triangle
    Be sure to include decimals even if you are going to input an integer
    Enter height: 10
    Enter width: 10
    The area of your polygon is 100.00

A:

if value == "rectangle" or "Rectangle":

is not what you think it is. It will compare value with the complete result of the expression "rectangle" or "Rectangle" which will always evaluate to True. It should be like this:
if value == "rectangle" or value == "Rectangle":

But a better option is
if value.lower() == "rectangle":

Or even better, convert to lowercase directly at the input. 
value = str(input("Your polygon is a: ")).lower()

Sidenote:
If you want to compare a value with several values, you can do like this:
if value in ["rectangle", "Rectangle", "RECTANGLE"]:

But in this case that's not an optimal option. Just convert to lowercase before comparing.
Here is complete code:
def area_finder_rectangle (height,width):
    area = height*width
    print("The area of your polygon is %.2f" % area)

def area_finder_triangle (height,width):
    area = (height*width)*0.5
    print("The area of your polygon is %.2f" % area)

while True:

    print ("Choose the polygon that you want to calculate the area from.")
    print ("Polygons supported: rectangle, triangle")
    value = str(input("Your polygon is a: ")).lower()
    print ("Be sure to include decimals even if you are going to input an integer")

    if value == "rectangle":

        heightt = float(input("Enter height: "))
        widthh = float(input("Enter width: "))
        area_finder_rectangle (height = heightt,width = widthh)

    elif value == "triangle":
        heightt = float(input("Enter height: "))
        widthh = float(input("Enter width: "))
        area_finder_triangle (height = heightt,width = widthh)

    print ("")

And a testrun:
[klutt@klutt-sandbox tmp]# python3 polygon.py
Choose the polygon that you want to calculate the area from.
Polygons supported: rectangle, triangle
Your polygon is a: rectangle
Be sure to include decimals even if you are going to input an integer
Enter height: 10.0
Enter width: 10.0
The area of your polygon is 100.00

Choose the polygon that you want to calculate the area from.
Polygons supported: rectangle, triangle
Your polygon is a: triangle
Be sure to include decimals even if you are going to input an integer
Enter height: 10.0
Enter width: 10.0
The area of your polygon is 50.00

One thing you should consider, which in this case would have made it easier for you to discover the problem, is to always add an else in case of non-valid input.
    if value == "rectangle":
        <do something>    
    elif value == "triangle":
        <do something>
    else:
        print("Unknown polygon")

A:

Your branch if value == "rectangle" or "Rectangle:" will always be taken and you will always calculate a rectangle.  Why it does this makes more sense if you put in parentheses.
    if (value == "rectangle") or ("Rectangle"):

If value is 'triangle' the first part evaluates to False but the second part of the or-condition evaluates to True since in Python a non-empty string in a boolean context is considered True.
To get the effect you want you need to say
    if (value == "rectangle") or (value == "Rectangle"):

