Dans EduPython la "tortue" est un crayon programmable, capable de dessiner n'importe quelles figures décrite par une suite d'instructions (tracer un trait, tournet à droite, tracer un cercle, etc.).
Voici des exemples de dessins réalisés par la tortue d'EduPython :
Exemple 1
Exemple 2
Exemple 3
Ce module de dessin d'EduPython est appelé "la tortue" car en dessinant le crayon avance tout doucement, comme une tortue.
APPLICATION 1 : Un premier programme simple
Pour commencer testez dans EduPython le programme suivant. Quelle figure obtenez-vous ?
from turtle import *
begin_fill()
forward(200)
left(90)
forward(200)
left(90)
forward(200)
left(90)
forward(200)
left(90)end_fill()
done()
Modifiez une ou plusieurs valeurs 200 puis constatez le rôle de l'instruction forward.
Modifiez une ou plusieurs valeurs 90 puis constatez le rôle de l'instruction left.
Remplacez une ou plusieurs instructions left par right puis constatez le rôle de l'instruction right.
Notez dans le cahier le rôle des instructions forward, left et right.
En vous inspirant du programme précédent, proposez un programme qui dessine un triangle équilatéral comme celui-ci :
Enregistrez votre programme sous le nom triangle.py dans le répertoire python de votre lecteur réseau.
Remarque à noter : l'instruction done() à la fin du programme permet de rendre la fenêtre à Windows en lui indiquant qu'on a fini de dessiner. Sans l'instruction done() la fenêtre serait une fenêtre "morte" pour Windows, c'est-à-dire ingérable. Pour le vérifier testez le programme précédent en supprimant l'instruction done() sur la dernière ligne.
Toutes les instructions propre à la tortue et permettant de dessiner des figure seront noté dans un nouvau tableau sur une nouvelle page dans le cahier.
Préparez dans votre cahier, sur une nouvelle page, un tableau comme le suivant permettant d'y inscrire petit à petit toutes les nouvelles instructions permettant de piloter la tortue qui seront découvertes dans les différents programmes donnés en exemple :
Instructions pilotant la tortue |
||
Instruction |
Rôle |
Exemple |
forward |
fait avancer la tortue |
forward(200) |
done |
termine proprement le programme et évite que la fenêtre de la tortue "plante" |
done() |
Remarque : pour exécuter le programme pas à pas afin de bien comprendre le rôle de chaque ligne de code il faut appuyer une fois sur la touche F7 pour lancer le mode pas à pas, puis appuyer plusieurs fois sur la touche F8 pour exécuter le programme ligne à ligne. En observant le tracé de la tortue pendant le mode pas à pas on comprend vite le rôle de chaque instruction dans le programme.
On peut aussi utiliser la tortue en mode intéractif en tapant directement les instructions dans la console de Python et en observant directement le résultat dans la fenêtre de la tortue (ne pas oublier de taper done() à la fin pour pouvoir fermer proprement la fenêtre de la tortue). Pour écrire plusieurs instruction sur la même ligne dans la console il faut les séparer par un point-virgule. Exemple :
>>> forward(100);circle(50);done()
Remarque : pour utiliser la tortue en mode intéractif sans que la fenêtre ne "plante", il vaut mieux utiliser IPython plutôt que la console d'EduPython.
APPLICATION 2 : Un autre programme utilisant la tortue
Testez dans EduPython le programme suivant :
from turtle import *
color("red","yellow")
begin_fill()
for i in range(36):
forward(200)
left(170)
end_fill()
done()
La ligne for i in range(36): permet de répéter 36 fois les mêmes instructions. Les lignes qui sont concernés par la boucle for sont décalées à droite (par une tabulation).
Modifiez les valeurs 36, 200 et 170 pour bien comprendre le rôle de chaque instruction puis constatez le résultat en observant la figure obtenue.
Modifiez les couleurs de la figure puis notez dans le cahier le rôle et la syntaxe de l'instruction color.
Proposez un programme qui dessine une étoile à 5 branches comme celle-ci, les couleurs étant totalement libres :
Une étoile à 5 branches
Enregistrez votre programme sous le nom etoile.py dans le répertoire python de votre lecteur réseau.
Modifiez votre programme pour tracer une étoile à 6 branches ou à 12 branches :
Une étoile à 6 branches
Une étoile à 12 branches
APPLICATION 3 : Polygone paramétré
Enregistrez le programme de base suivant sous le nom polygone.py dans votre lecteur réseau :
from turtle import *
from lycee import *chaine=input("Entrez le nombre de côtés du polygone à dessiner (de 3 à 12)")
if chaine.isdecimal():
n=int(chaine)
begin_fill()
# ajouter lici le code qui dessine le polygone à n côtés
end_fill()
done()
else:
print("Il faut saisir un nombre entier entre 3 et 12")
Ce programme demande à l'utilisateur le nombre de côtés à dessiner puis l'enregistre dans la variable n grâce à la fonction input() de Python.
Remarque : la fonction isdecimal permet de savoir si la chaine saisie (ici la variable chaine) est un nombre contenant seulement des chiffres ou pas.
Proposez une solution pour que le polygone dessiné ait toujours n côtés, quelque soit le nombre n saisie par l'utilisateur entre 3 et 12.
Grâce à l'instruction write de Python permettant d'écrire du texte dans la fenêtre de la tortue, rajoutez un message donnant le nom exact du polygone tracé en fonction du nombre de côtés. Voici pour rappel le nom exect des polygones régulier possédant entre 3 à 12 côtés :
Nom des 10 polygones réguliers à tracer |
|
Nombre de côtés du polygone |
Nom exact de polygone |
3
|
un triangle ou un un trigone |
4 |
un carré ou un un tétragone |
5 |
un pentagone |
6 |
un hexagone |
7 |
un heptagone |
8 |
un octogone |
9 |
un nonagone |
10 |
un décagone |
11 |
un hendécagone |
12 |
un dodécagone |
APPLICATION 4 : Étoile paramétrée
Proposez un programme qui demande à l'utilisateur le nombre de branches à dessiner dans une étoile, puis qui trace cette étoile à n branches, pour n allant de 3 à 12.
Quelle est la limite de la valeur n à saisir au delà de 12 ? Précisez-les à l'utilisateur et interdisez toutes autres saisies.
Une fois fonctionnel, enregistrez votre programme sous le nom etoile_parametree.py dans votre lecteur réseau.
Voici quelques exemples d'étoiles à n branches, avec n compris entre 3 et 12. De telles figures géométriques s'appellent des polygones réguliers étoilés :
étoile à 3 branches : un trigramme
étoile à 4 branches : un tétragramme
étoile à 5 branches : un pentagramme
étoile à 6 branches : un hexagramme
étoile à 7 branches : un heptagramme
étoile à 8 branches : un octogramme
étoile à 9 branches : un nonagramme
étoile à 10 branches : un décagramme
étoile à 11 branches : un hendécagramme
étoile à 12 branches : un dodécagramme
Voici d'autres exemples de polygones réguliers étoilés :
Et voici les angles exacts de l'étoile à 5 branches :
Remarques concernant les angles particuliers de l'étoiles à 5 branche sachant que l'angle plein vaut 360° :
360°/5 = 72°
360°/(2*5) = 36°
(2*360°)/5 = 144°
144° - 36° = 108°
Il vous appartient de trouver quels sont les angles particuliers des étoiles à n branches pour n compris entre 3 et 12.
Grâce à l'instruction write de Python permettant d'écrire du texte dans la fenêtre de la tortue, rajoutez un message donnant le nom exact du polygone étoilés tracé en fonction du nombre de sommets. Voici le nom exect des polygones étoilés régulier possédant entre 3 et 12 sommets :
Nom des 10 polygrammes étoilés réguliers à tracer |
|
Nombre de sommets du polygramme étoilé |
Nom exact de polygramme étoilés |
3
|
un trigramme |
4 |
un tétragramme |
5 |
un pentagramme |
6 |
un hexagramme |
7 |
un heptagramme |
8 |
un octogramme |
9 |
un nonagramme |
10 |
un décagramme |
11 |
un hendécagramme |
12 |
un dodécagramme |
Voici pour information un polygone étoilé régulier à 24 sommets :
On remarque de les 24 angles des sommets sont tous identiques, et sont aigus (inféreiur à 90°).
Et voici un exemple de programme qui trace une étoile. La fonction etoileT attend 3 paramètres : une longueur, un angle, et le nombre de sommets du polygone étoilé :
Programme à tester, puis éventuellement à faire évoluer
Et voici cette fonction etoile en texte :
def etoile(longueur,angle,npointes):
pendown()
a=180-angle
for i in range(npointes):
forward(longueur)
write(i+1,font=("Arial",30,"normal"))
left(a)
forward(longueur)
right(a-360/npointes)
Pour l'utiliser il faut l'appeler en lui indiquant 3 paramètres :
En appelant etoile(100,30,9) Python tracera une étoile à 9 branches :
Et en appelant plusieurs fois la fonction etoile() dans une boucle il est possible de dessiner une série d'étoiles, de la plus petite à la plus grande :
Exemple de réalisation graphique en Python :
Plusieurs étoiles, de différents couleurs, tracées par la tortue de Python
APPLICATION 5 : Découverte des différents instructions liées à la tortue
Pour expérimenter d'autres exemples de programmes utilisant la tortue, ouvrez puis lancez dans EduPython les différents programmes commençant par tortue_xxx.py ou par dessin_xxx.py qui sont disponibles en cliquant sur le lien suivant :
Les exemples de programmes à tester
Notez dans votre cahier les nouvelles instructions rencontrées dans les différents programmes après avoir constaté expérimentalement leur rôle. Vous devriez avoir noté au minimum les instructions suivantes permettant de piloter ou de configurer la tortue :
Les instructions pour dessiner |
|
instruction |
rôle |
forward |
déplace la tortue en ligne droite en marche avant |
back |
déplace la tortue en ligne droite en marche arrière |
left |
la tortue tourne sur elle même vers la gauche d'un angle donné en degré |
right |
la tortue tourne sur elle même vers la droite d'un angle donné en degré |
circle |
trace un cercle d'un rayon et d'un angle donné |
dot |
trace un point d'une taille donnée |
write |
affiche du texte dans la fenêtre de la tortue |
begin_fill |
début d'une nouvelle figure |
end_fill |
fin d'une figure (ferme la figure et colore l'intérieur) |
Remarque : la tortue ne dessine pas pendant qu'elle tourne sur elle même (left ou right)
Exemple d'utilisation de l'instruction circle :
Avec un seul paramètre l'instruction circle trace un cercle complet de rayon donné :
circle(100) : trace un cercle entier de rayon 100 pixels
circle(50) : trace un cercle entier de rayon 50 pixels
Avec 2 paramètres l'instruction circle trace un arc de cercle de rayon et d'angle donnés :
circle(100,60) : trace un arc de cercle de rayon 100 pixels et d'angle 60 degrés
circle(40,90) : trace un arc de cercle de rayon 40 pixels et d'angle 90 degrés (un quart de cercle)
circle(40,-90) : trace un arc de cercle de rayon 40 pixels et d'angle -90 degrés
Les instructions pour configurer la tortue |
|
instruction |
rôle |
color |
configure la couleur du trait et de l'intérieur de la figure |
pencolor |
configure la couleur du trait seulement |
bgcolor |
configure la couleur du fond de la fenêtre |
pensize |
configure l'épaisseur du crayon |
width |
configure la largeur des traits |
speed |
configure la vitesse de la tortue |
up |
lève le crayon pour déplacer la tortue sans dessiner |
down |
baisse le crayon pour dessiner à nouveau |
goto(x,y) |
déplace le curseur au point de coordonnées (x,y) : goto(0,0) pour remettre le curseur au centre |
hideturtle |
cache le curseur de la tortue |
showturtle |
refait apparaître le curseur de la tortue s'il a été caché |
shape |
configure la forme du curseur |
reset |
efface toutes les figures tracées dans la fenêtre de la tortue et replace le curseur au centre |
clear |
efface toutes les figures tracées dans la fenêtre de la tortue mais ne déplace pas le curseur |
undo |
annule la dernière action de la tortue (peut être répété plusieurs fois) |
mainloop |
rend la fenêtre à Windows |
done |
rend la fenêtre à Windows |
exitonclick |
rend la fenêtre à Windows puis ferme la fenêtre de la tortue si on clique dedans |
bye |
ferme la fenêtre la tortue |
Remarque : l'instruction done() à la fin d'un programme permet de rendre la fenêtre de la tortue à Windows afin de pouvoir la fermer proprement (tout comme mainloop() ).
Astuce à noter dans le cahier : QUESTION : Comment obtenir de l'aide sur une fonction particlière ? REPONSE : En utilisant la fonction help() dans la console de Python. Exemple : quelle est la syntaxe et les différentes possibilités de la fonction shape qui permet de configurer la forme du curseur de la tortue ? Pour le savoir, tapez help(shape) dans la console de Python. Il vous renvoie directement la syntaxe de shape : on comprend alors que le paramètre à passer à la fonction shape peut être 'arrow', 'turtle', 'circle', 'square', 'triangle', ou 'classic'. A vous de les tester : shape('square'), shape('triangle'), shape('turtle'), etc. |
Pour obtenir toutes les instructions avancées de la tortue, tapez import turtle dans la console de Python puis ensuite turtle. : Python vous liste alors toutes les instructions relatives à la tortue, avec une aide affichée dans la fenêtre contextuelle.
Testez le programme simple suivant dans lequel on trace un demi-cercle :
from turtle import *
circle(100,180)
done()
Résultat : de dessin est en "fil de fer" :
Puis testez le programme suivant dans lequel l'instruction circle est encadrée par begin_fill() et end_fill() :
from turtle import *
begin_fill()
circle(100,180)
end_fill()
done()
Résultat : le dessin est en "figure pleine" :
Voici pour rappel le nom des couleurs principales en anglais à utiliser avec les instructions color, pencolor ou bgcolor :
Exemple d'utilisation de l'instruction color :
color("red") configure le trait et l'intérieur de la figure en rouge :
color("red","yellow") configure le trait en rouge et l'intérieur de la figure en jaune :
APPLICATION 6 : Dessin du coeur
Proposez un programme qui dessine un coeur composé de 2 arcs de cercle et de 2 segments parfaitement joins :
APPLICATION 7 : Dessin du carreau, du trèfle et du pique
Ajoutez à votre création le dessin d'un carreau, d'un trèfle et d'un pique en plus du coeur, les 4 figures devant être correctement espacées et alignées :
Voici le dessin d'un coeur :
♡ ♥
Voici un exemple réalisé en Python :
Et voici un autre exemple réalisé en Python :
En voici ce même exemple mais avec l'intérieur des figures pleines :
Chacune des 4 figures (coeur, carreau, trèfle et pique) est entourée par begin_fill() et end_fill()
Une instruction color avant chacun des 4 begin_fill() configure la couleur de la figure :
color("red") pour le coeur et le carreau
color("black") pour le trèfle et le pique
Enregistrez votre programme sous le nom pique.py dans le répertoire python de votre lecteur réseau.
APPLICATION 5 : Pour aller plus loin
Vous retrouvez les instructions de base de la tortue dans le document suivant :
Les instructions de base de la tortue
Proposez un programme pour réaliser chacune des 5 figures demandées à la fin du document précédent.
APPLICATION 6 : Une figure complexe au choix
Pour aller plus loin avec l'utilisation de la tortue dans Edupython lisez le chapitre 4 (page 33) du document ressource Python en testant chaque exemple dans EduPyton :
Proposez ensuite un programme utilisant les différentes instructions de dessins pilotant la tortue et réalisant une figure originale mais reconnaissable de votre choix (figure géométrique, polygone, figure répétitive, étoile, rosace, etc.).
Vous enregistrerez chacune de vos figures complexes sous un nom explicite (rosace.py, fleur.py, carre.py, etc.) dans le répertoire python de votre lecteur réseau.
Voici une rosace simple, tracé grâce à Python en reproduisant les mêmes figures (cercle et arcs de cercle) qu'une rosace dessinée au compas sur une feuille de papier :
Et voici l'algorithme qui a permis d'obtenir cette rosace simple. Un algorithme donne les instructions à réaliser, avec des phrases simples en français. Pour obtenir la rosace il vous appartient de convertir cet algorithme en programme Python en remplaçant les indications données par des instructions Python équivalentes et permettant de piloter la tortue.
Dans ces algorithmes la variable R est le rayon de la rosace. Utilisez par exemple R=200
Algorithme 1 de la rosace simple non colorée |
|
Voici un autre algorithme donnant le même résultat au final :
Algorithme 2 de la rosace simple non colorée |
|
Pour obtenir une rosace dont chaque surface fermée est colorée, vous pouvez suivre cet algorithme :
Algorithme de la rosace colorée |
|
Voici un exemple de rosace colorée avec une même couleur pour les 6 branches :
Et voici une rosace colorée utilisant 14 couleurs aléatoires :
Et voici une rosace à 12 branches utilisant des couleurs aléatoires :
Une rosace à 24 branches :
Une rosace à 36 branches :
Une rosace à 24 branches mais avec des branches de différentes tailles :
Une rosace à 36 branches mais avec des branches de différentes tailles :
Voici quelques exemples de figures géométriques complexes et répétitives :
Voici quelques exemples de rosaces :
APPLICATION 6 : mise en ligne de vos créations
Toutes les réalisations graphiques créées en Python dans cette activité doivent être maintenant exposées sur votre site Internet.
Le visiteur doit avoir accès aux images illustrant les figures tracées par Python mais aussi au code source prouvant que vous avez trouver une solution.
Notez dans votre cahier à la section "Python" l'astuce suivante expliquant comment créer une image à partir d'une figure de la tortue :
|
Avec Dreamweaver créez une nouvelle page python.html dans votre répertoire python puis exposez-y chacune de vos réalisations :
Toutes vos réalisations sont exposées sur une unique page python.html mais pour chaque programme on attend :
Exemple de présentation :
Mes pentagones imbriqués :
Télécharger mon programme des pentagones
Astuces :
Vous rajouterez ensuite un nouveau lien "Mes programmes en Python" sur la page d'accueil principale de votre site et permettant d'ouvrir votre page python.html.
Télécharger et tester de nombreux autres programmes utilisant la tortue
Retour à l'accueil du site python.gecif.net