# -*- coding: utf-8 -*- import random from turtle import * from math import sqrt # fonction retournant la nouvelle abscisse et la nouvelle ordonnée. # les paramètres sont les précédentes abscisses et ordonnées. def nouveau_point(a,o): " si le dé donne 1,construction du milieu du point précédent et (-200;-200)" " si le dé donne 2,construction du milieu du point précédent et (200;-200)" " si le dé donne 3,construction du milieu du point précédent et (0;200sqrt(3))" de=random.randint(1,3) if de==1: return (-200+a)/2,(-200+o)/2 if de==2 : return (200+a)/2,(-200+o)/2 if de==3: return a/2,(200*sqrt(3)/2+o)/2 # le triangle de base construit en mettant en évidence les sommets. def triangle_base(): up() goto(-200,-200) down() dot(20,"black") goto(200,-200) dot(20,"black") goto(0,200*sqrt(3)/2) dot(20,"black") goto(-200,-200) up() # construction des points à l'intérieur du triangle. paramètre est le nombre de points souhaités. def sierpinski(n): tracer(4,25) triangle_base()#construction du triangle de base abscisse=0.00 #l'abscisse du point de départ est 0. ordonnee=0.00 #l'ordonnée du point de départ est 0. for i in range(n): # on obtient l'abscisse et l'ordonnée d'un nouveau point par l'appel # de la fonction nouveau_point abscisse,ordonnee=nouveau_point(abscisse, ordonnee) goto(abscisse,ordonnee) down() dot(5,"red") #permet de tracer un point, 5 étant l'épaisseur du crayon. up() mainloop()