Page 4 sur 7
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.