└── 30lines.py /30lines.py: -------------------------------------------------------------------------------- 1 | import turtle 2 | def draw_triangle(points, color): 3 | turtle.fillcolor(color) 4 | turtle.penup() 5 | turtle.goto(points[0]) 6 | turtle.pendown() 7 | turtle.begin_fill() 8 | for i in range(1, 4): 9 | turtle.goto(points[i % 3]) 10 | turtle.end_fill() 11 | def midpoint(point1, point2): 12 | return ((point1[0] + point2[0]) / 2, (point1[1] + point2[1]) / 2) 13 | def sierpinski_triangle(points, order): 14 | if order == 0: 15 | draw_triangle(points, 'blue') 16 | else: 17 | mid1 = midpoint(points[0], points[1]) 18 | mid2 = midpoint(points[1], points[2]) 19 | mid3 = midpoint(points[2], points[0]) 20 | sierpinski_triangle([points[0], mid1, mid3], order - 1) 21 | sierpinski_triangle([mid1, points[1], mid2], order - 1) 22 | sierpinski_triangle([mid3, mid2, points[2]], order - 1) 23 | def main(): 24 | turtle.speed(0) 25 | points = [(-200, -100), (0, 200), (200, -100)] 26 | sierpinski_triangle(points, 5) 27 | turtle.hideturtle() 28 | turtle.done() 29 | if __name__ == "__main__": 30 | main() --------------------------------------------------------------------------------