Index de l'article

Affichage des n° des points sur le cercle et ajout de la liste dans un dictionnaire

Objectif

Afficher près de chaque point son label (son n°  de 0 à npt-1) et enregistrer les coodonnées des points dans un dictionnaire. L'intérêt du dictionnaire est de pouvoir par la suite appelé les coordonnées d'un point en utilisant son nom ou label ;).

Je veux aussi pouvoir jouer avec le rayon du cercle pour modifier si besoin sa taille afin de mieux voir les noms des points si besoin.

Script

from turtle import *
rayon=200 #rayon du cercle
npt=11 #nbre de points
pos={} #dictionnaire

penup()
goto(0,-rayon)
pendown()

for i in range(npt):
    dot()
    write(i)
    pos[i]=position()
    print("coord=",position(),"val dans dictionnaire=",pos[i])# pour comprendre
    circle(rayon,360/npt)

print(pos)# pour visualiser le dictionnaire label:(valeurs)
penup()
home()

Analyse

  • # symbole me permettant d'ajouter dans mon script des commentaires
  • variable rayon=200 => pour pouvoir modifier le rayon de mon cercle => donc je dois remplacer la valeur 100 dans mon goto et dans circle par la variable rayon
    (vous noterez le commentaire)
  • pos={} => création d'un dictionnaire se nommant "pos". Comme entre les accolades il n'y a rien, mon dictionnaire est vide
  • goto(0,-rayon) => remplace maintenant le goto(0,-100) car le décalage vers le bas doit rester cohérent avec ma valeur de rayon
  • write(i) => commande qui écrit la valeur de i dans turtle à l'endroit où se trouve la tortue - ce qui tombe bien après le dot()
  • pos[i]=position() => affectation des coordonnées (position()) dans le dictionnaire
    pos[0] = (0.00,-200.00) 
    pos[1] = (108.13,-168.25)
    ...
  • print("coord=",position(),"val dans dictionnaire=",pos[i]) => donne l'affichage suivant dans le shell
    coord= (0.00,-200.00) val dans dictionnaire= (0.00,-200.00)
    ...
    coord= (-108.13,-168.25) val dans dictionnaire= (-108.13,-168.25)
    Je comprends donc que le dictionnaire pos contient les entrées i=0, i=1... et que je peux appeler chaque coordonnées avec pos[i]
  • print(pos) => n'est plus dans la boucle for donc affichage final du dictionnaire 
    {0: (0.00,-200.00), 1: (108.13,-168.25), 2: (181.93,-83.08), 3: (197.96,28.46), 4: (151.15,130.97), 5: (56.35,191.90), 6: (-56.35,191.90), 7: (-151.15,130.97), 8: (-197.96,28.46), 9: (-181.93,-83.08), 10: (-108.13,-168.25)}
    soit { label 0 : valeur associée au label 0 , label 1 : valeur associée au label 1 , ... , label final : valeur associée au label final }

Le plus dur me semble fait, je dispose des coordonnées, je peux appeler les coordonnées, et à l'aide d'un pendown() et de goto(x,y) je dois bien pouvoir faire un trait entre deux points.