Sagot :
Bonjour !
Réponse (/!\ Respect des espaces/tabulation important en python):
# On appelle une torture que l'on nomme t :
import turtle as t
# On donne les instructions à la tortue
for i in range(7):
t.left(90)
t.forward(30)
t.right(90)
t.forward(10)
t.right(90)
t.forward(30)
t.left(90)
t.forward(10)
t.right(90)
t.forward(30)
# On finit d'utiliser la torture
t.mainloop()
Explications :
D'abord, on cherche à trouver un motif récurrent. Une fois trouvé, on remarque ça superficie, ici en l'occurrence, le motif représente 30x20 (Le 4 premiers trait dessiné).
Maintenant qu'on connait le motif récurrent, on peut passer a l'algorithme.
Remarque: Si tu ne connais pas les les méthodes de Turtle, tu peux les trouvés par ici: https://docs.python.org/fr/3/library/turtle.html
Par défaut, quand la tortue avance, elle le fait en ligne horizontale. (Même si on ne le sait pas, on peut tt de même faire un code qui nous permet de savoir en faisant simplement avancer la tortue)
Sachant cela, on peut alors en déduire que dès le début, nous devons dire à la tortue de ce tourner de tel façon à ce qu'elle puisse dessiné la première ligne que l'on veut vertical. Pour ça, on utilise la méthode "left" (Traduit en français par gauche), en utilisant cette méthode, on devra passer en argument le degré à laquelle la tortue doit ce tourner. Inutile de dire car évident, qu'elle doit se tourner de 90°.
Une fois notre tortue tourné, pour dessiner cette ligne, elle doit avancer. Pour réaliser cela, on utilise la méthode "forward" (Traduit en français par avancer), et on lui passe en argument la distance à laquelle on veut qu'elle avance. Sur l'image, nous avons une indication qui nous permet de déduire qu'elle devra avancer de 30.
La tortue nous a dessiner le premier trait dessiner pour l'heure, mais voilà que du vertical, on doit retourner à l'horizontale. Dans le premier cas, nous devions nous tourner vers la gauche, dans celui-ci, sachant que la ligne que nous allons tracer va vers la droite, alors nous devons demander à la tortue de ce tourner vers la droite. Cela ce fait exactement de la même façon que nous avons fait pour la gauche, à la différence que la méthode pour y parvenir est "right" (Traduit en français pas droite).
La tortue est maintenant tourner vers la droite, on veut dessiner notre trait vertical, plus d'hésitation possible, on connait la méthode, c'est "forward", mais, la distance à laquelle on doit avancer n'est pas la même que la première fois, toujours en utilisant les indications, on peut en déduire qu'on devra avancer de 10, car nous devons avancer de moitié de 20, et 20/2 = 10. Donc au lieu de passer 30 comme la première fois, on passe 10 en argument à la méthode forward.
Suivant ce que j'ai dit depuis le début, il suffit ensuite encore une fois de jouer à je te tourne et je te fais avancer jusqu'à dessiner le bon motif.
Maintenant que l'on sait dessiner le motif récurrent, on sait qu'il devra être répété. Pour savoir combien de fois, il suffit de compter le nombre de fois que ce motif apparait.
Une fois qu'on a déterminer ce nombre de fois, on va utiliser une boucle "for" pour répéter l'action autant de fois que nécessaire. Pour répéter une action X fois avec une boucle for, on sait (Ou sinon on cherche) que la syntaxe est "for i in range(X):". X étant le nombre de fois que l'action doit être répété. i représentant la séquence actuel pendant le traitement de la boucle
(Remarque: On utilise pas la variable i dans notre code).
Dans tout ça, je pense que tu as assez d'information quand même pour réfléchir à l'algorithme et le code que nous allons utiliser.
On obtiens alors l'algorithme suivant:
Répété 7 fois:
Tourner à gauche à 90°
Avancer de 30
Tourner à droite à 90°
Avancer de 10
Tourner à droite à 90°
Avancer de 30
Tourner à gauche à 90°
Avancer de 10
Fin de répétition
Tourner à droite à 90°
Avancer de 30
Algorithme maintenant réaliser, on peut le convertir en code, ce qui nous donne le résultat:
for i in range(7):
t.left(90)
t.forward(30)
t.right(90)
t.forward(10)
t.right(90)
t.forward(30)
t.left(90)
t.forward(10)
t.right(90)
t.forward(30)