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 :

Document ressource Python

 

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

Configurer l'épaisseur du crayon

Répéter 3 fois:

Tracer un arc de cercle de rayon R et d'angle 120°
Faire tourner le curseur de 120° vers la gauche

Tracer un arc de cercle de rayon R et d'angle 60°
Faire tourner le curseur de 60° vers la gauche
Tracer un arc de cercle de rayon R et d'angle 60°

Répéter 3 fois:

Faire tourner le curseur de 120° vers la gauche
Tracer un arc de cercle de rayon R et d'angle 120°

Faire tourner le curseur de 60° vers la gauche
Tracer un cercle entier de rayon R

Voici un autre algorithme donnant le même résultat au final :

Algorithme 2 de la rosace simple non colorée

 

Configurer l'épaisseur du crayon

Lever le crayon
Déplacer le curseur au point de coordonnées (R,0)
Baisser le crayon

Faire tourner le curseur de 90° vers la gauche
Tracer un cercle entier de rayon R

Lever le crayon
Remettre le curseur à l'origine
Tracer un arc de cercle invisible de rayon R et d'angle 60°
Baisser le crayon

Répéter 3 fois:

Faire tourner le curseur de 120° vers la gauche
Tracer un arc de cercle de rayon R et d'angle 120°

Lever le crayon
Déplacer le curseur au point de coordonnées (0,R)
Orienter le curseur à 120°
Baisser le crayon

Répéter 3 fois:

Faire tourner le curseur de 120° vers la gauche
Tracer un arc de cercle de rayon R et d'angle 120°

 

 

Pour obtenir une rosace dont chaque surface fermée est colorée, vous pouvez suivre cet algorithme :

Algorithme de la rosace colorée

Lever le crayon
Déplacer le curseur au point de coordonnées (0,R)
Baisser le crayon

Configurer l'épaisseur du crayon
Configurer les couleurs du trait et du remplisage

Orienter le curseur à 180°
Commencer une nouvelle figure
Tracer un cercle entier de rayon R
Fermer la figure pour la colorer

Lever le crayon
Remettre le curseur à l'origine
Baisser le crayon

Répéter 6 fois :

Configurer les couleurs du trait et du remplisage
Commencer une nouvelle figure
Tracer un arc de cercle de rayon R et d'angle 60°
Faire tourner le curseur de 120° vers la gauche
Tracer un arc de cercle de rayon R et d'angle 60°
Fermer la figure pour la colorer
Faire tourner le curseur de 60° vers la gauche

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 :

Comment créer une image afin d'exposer les figures créées en Python sur le site Internet ?

1 – Lancez votre programme Python et laisser la tortue tracer entièrement votre figure

2 – Redimensionnez la fenêtre de la tortue afin qu'elle ne soit pas trop grande et afin de centrer au mieux la figure

3 – La fenêtre de la tortue étant la fenêtre active, appuyer sur les touches Alt-Imprime écran du clavier

4 – Ouvrir Fireworks et y créer un nouveau document (menu Fichier + Nouveau)

5 – Coller l'image dans Fireworks (Edition + Coller)

6 – Sans rien modifier, enregistrez l'image en PNG dans votre dossier p:\python (menu Fichier + Enregistrer sous) en lui donnant un nom explicite (triangle, etoile, coeur, rosace, etc.)

 

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