La petite maison.
On rappelle :
- Qu'au départ la tortue est orientée de l'ouest vers l'est (elle regarde vers la droite de l'écran).
- Que
forward(x)
fait avancer la tortue de x pixels (x est de type int ou float).
- Que
left(a)
fait tourner la tortue de a degrés vers sa gauche (a est de type int ou float).
- Que
right(a)
fait tourner la tortue de a degrés vers sa droite.
Donner une série d'instructions possibles pour représenter le schéma de maison ci-dessous :
Tous les segments de cette figure sont de même longueur.
Une solution possible.
from turtle import *
lg = 100 # longueur d'un côté
forward(lg) # segment horizontal du bas
left(90)
forward(lg) # segment vertical droit
left(30)
forward(lg) # segment toit, partie droite
left(120)
forward(lg) # segment toit, partie gauche
left(30)
forward(lg) # segment vertical gauche
hideturtle() # on cache la tortue
mainloop() # pour maintenir fenêtre ouverte
Figure codée.
On fixe une longueur lg et un angle a.
On cherche à coder certaines figures avec seulement deux symboles :
- le symbole F qui signifiera "avancer de la longueur lg",
- le symbole + signifiant "tourner à gauche de a degrés".
Par exemple, si l'on prend a = 90, un carré de côté lg sera codé par : F+F+F+F.
On notera fig(100, 90, F+F+F+F) le carré de côté lg=100.
- Écrire une fonction python traceFig( lg, a, chaine) traçant la figure (à l'aide de la tortue bien entendu) fig(lg, a, chaine).
- Tracer la petite maison de l'exercice précédent à l'aide d'une instruction traceFig( lg, a, chaine).
Une solution possible.
from turtle import *
def traceFig(lg, a, chaine) :
for c in chaine :
if c == 'F' : forward(lg)
elif c == '+' : left(a)
traceFig( 100, 30, 'F+++F+F++++F+F')
hideturtle() # on cache la tortue
mainloop() # pour maintenir fenêtre ouverte
Code d'un triangle et d'une étoile.
A l'aide de la fonction traceFig(lg, a, chaine)
de l'exercice précédent, tracer les deux figures ci-dessous.
- Un triangle équilatéral :

- L'étoile suivante (tous les segments ont même longueur) :

Une solution possible.
Pour le triangle :
from turtle import *
def traceFig(lg, a, chaine) :
for c in chaine :
if c == 'F' : forward(lg)
elif c == '+' : left(a)
traceFig( 100, 120, 'F+F+F') # triangle équilatéral
hideturtle() # on cache la tortue
mainloop() # pour maintenir fenêtre ouverte
Pour l'étoile :
from turtle import *
def traceFig(lg, a, chaine) :
for c in chaine :
if c == 'F' : forward(lg)
elif c == '+' : left(a)
mot = 'F+++++F++F+++++F'
traceFig( 100, 60, mot + '++' + mot + '++' + mot)
hideturtle() # on cache la tortue
mainloop() # pour maintenir fenêtre ouverte
Code d'un triangle et d'une étoile, bis.
lg et a étant fixés, le 'vocabulaire' permettant le codage des figures est pour le moment constitué des symboles F et +.
On décide d'ajouter le symbole - avec la signification suivante : "tourner vers la droite de a degrés".
Modifier la fonction traceFig(lg, a, chaine)
pour ajouter ce symbole puis donner un nouveau code de l'étoile de l'exercice précédent en choisissant a=60, ce nouveau code fera intervenir les trois symboles.
Une solution possible.
from turtle import *
def traceFig(lg, a, chaine) :
for c in chaine :
if c == 'F' : forward(lg)
elif c == '+' : left(a)
elif c == '-' : right(a)
mot = 'F+F--F+F'
traceFig( 100, 60, mot + '--' + mot + '--' + mot)
hideturtle() # on cache la tortue
mainloop() # pour maintenir fenêtre ouverte
Ou la suivante (obtenu en remplaçant la série de cinq + du code du corrigé de l'exercice précédent par un seul symbole -) :
from turtle import *
def traceFig(lg, a, chaine) :
for c in chaine :
if c == 'F' : forward(lg)
elif c == '+' : left(a)
elif c == '-' : right(a)
mot = 'F-F++F-F'
traceFig( 100, 60, mot + '++' + mot + '++' + mot)
hideturtle() # on cache la tortue
mainloop() # pour maintenir fenêtre ouverte
Les exercices de cette page se poursuivent dans la fiche 2.