In [1]:
import turtle
In [2]:
def draw_triangle(points, color, my_turtle):
    my_turtle.fillcolor(color)
    my_turtle.up()
    my_turtle.goto(points[0][0], points[0][1])
    
    my_turtle.down()
    my_turtle.begin_fill()
    #                    X     ,     Y
    my_turtle.goto(points[1][0], points[1][1])
    my_turtle.goto(points[2][0], points[2][1])
    my_turtle.goto(points[0][0], points[0][1])
    my_turtle.end_fill()
In [3]:
def get_mid(p1, p2):
    return (p1[0] + p2[0])/2, (p1[1] + p2[1])/2
In [4]:
def sierpinski(points, degree, my_turtle):
    color_map = ["blue", "red", "green", "lightgreen",
                 "yellow", "violet", "orange"]
    
    draw_triangle(points, color_map[degree], my_turtle)
    
    if degree > 0:
       sierpinski([points[0],
                   get_mid(points[0], points[1]),
                   get_mid(points[0], points[2])],
                   degree-1, my_turtle)
    
       sierpinski([points[1],
                   get_mid(points[0], points[1]),
                   get_mid(points[1], points[2])],
                   degree-1, my_turtle)
        
       sierpinski([points[2],
                   get_mid(points[2], points[1]),
                   get_mid(points[0], points[2])],
                   degree-1, my_turtle)
In [13]:
def main():
    my_turtle = turtle.Turtle()
    my_win = turtle.Screen()
    my_points = [[-200, -100], [0, 200], [200, -100]]
    sierpinski(my_points, 6, my_turtle)
    my_win.exitonclick()
In [ ]:
main()