C0 Révisions
Activités
Activité 1 : Module turtle
de Python
Le but de cette activité est de redécouvrir les bases de la programmation en python en utilisant le module turtle
qui permet de dessiner à l'aide d'une "tortue" (équivalente à un crayon) à laquelle on donne des instructions (se déplacer, avancer, tourner, ...) de façon à former le dessin désiré. Cette tortue se déplace sur un écran (équivalent au papier), doté d'un repère comme en mathématiques.
-
Dessiner une grille de morpion
On souhaite dessiner une grille du jeu de morpion comme ci-dessous (où le repère du papier est tracé de façon à connaître les dimensions et positions des traits) :-
Recopier et executer le programme suivant :
import turtle # Création du "papier" et du "crayon" crayon = turtle.Turtle() papier = turtle.Screen() # Taille, dimension et couleur pour le papier et le crayon papier.bgcolor("beige") papier.setup(width=500,height=500) crayon.color("navy") crayon.pensize(5) # Tracé d'un trait avec les coordonnées des extrémités crayon.penup() crayon.goto(-50,-150) crayon.pendown() crayon.goto(-50,150) # Tracé d'un trait en orientant et en faisant avancer la tortue crayon.penup() crayon.goto(50,-150) crayon.pendown() crayon.setheading(90) crayon.forward(300) # Attends un clic pour fermer la fenêtre de dessin papier.exitonclick()
-
Expliquer le rôle des instructions suivantes :
pensize
etcolor
penup
etpendown
goto
etforward
setheading
Aide
Vous pouvez modifier les paramètres ou supprimer certaines instructions pour en voir l'effet sur le dessin. Aider vous aussi des commentaires.
-
Compléter ce programme en traçant les deux traits horizontaux manquants afin de compléter le dessin de la grille de morpion.
-
-
Dessiner un cercle au centre de la grille de morpion (de rayon 40, de couleur
darkred
avec un crayon d'épaisseur 7) de façon à obtenir le dessin final suivant :Aide
Utiliser
circle(r)
oùr
est le rayon du cercle à tracer, on fera attention que le centre du cercle se situe toujours à gauche de l'orientation de la tortue et à une distancer
comme représenté ci-dessous :
Activité 2 : De l'utilité des fonctions
Attention
Cette activité est la suite de la précédente, on doit donc déjà disposer d'un programme Python permettant de tracer la grille de morpion ainsi que le cercle central.
Même si vous pouvez télécharger ce programme ici , il est fortement conseillé d'avoir assimilé les notions de l'activité précédente (tracé des lignes et des cercles) avant de continuer.
-
On propose d'écrire une fonction
ligne
permettant de tracer avec la tortuecrayon
un trait en donnant les coordonnéesx1
ety1
de l'origine etx2
ety2
de l'extrémité.- Par quel mot clé commence la définition d'une fonction en Python ?
- Quels seront ici les arguments de la fonction ?
- Recopier et compléter le code de cette fonction :
... ligne(..,..,..,..): crayon....() crayon....(..,..) crayon.....() crayon.....(..,..)
- Ajouter une chaîne de documentation à cette fonction
- Faire le tracé de la grille de morpion en vous aidant de cette fonction.
- Que peut-on dire par rapport à version du programme qui n'utilisait pas de fonction ?
-
En vous inspirant de l'exemple précédent, écrire une fonction
ligne2
permettant de tracer un trait en donnant les coordonnéesx
ety
de son origine, ainsi que sa longueurl
et sa directiond
(sous la forme d'un angle).Aide
On utilisera
forward
pour avancer de la longueur indiquée etsetheading
pour positionner la tortue avec l'orientation désirée. -
Ecrire une fonction
cercle
permettant de tracer un cercle dont on donne les coordonnées du centrex
ety
et le rayonr
-
Ecrire une fonction
croix
qui permet de tracer une croix () en donnant son centre et la longueur des branches.
Activité 3 : Une boucle pour répéter
On souhaite dessiner la grille suivante à l'aide du module turtle
de Python :
On dispose déjà d'un début de programme qui définit les propriétés du papier et du crayon ainsi que la fonction ligne
permettant de tracer une ligne en donnant les deux extrémités (voir activités précédentes) :
import turtle
# Création du "papier" et du "crayon"
crayon = turtle.Turtle()
papier = turtle.Screen()
# Taille, dimension et couleur pour le papier et le crayon
papier.bgcolor("beige")
papier.setup(width=500,height=500)
crayon.color("navy")
crayon.pensize(5)
def ligne(x1,y1,x2,y2):
crayon.penup()
crayon.goto(x1,y1)
crayon.pendown()
crayon.goto(x2,y2)
- Écrire les instructions permettant de tracer les lignes horizontales.
- Une (bien) meilleure solution
- Vérifier que les instructions suivantes permettent de tracer les lignes verticales :
for abscisse in range(-200,250,50): ligne(abscisse,-200,abscisse,200)
- Quelles sont les valeurs prises successives prises par la variable
abscisse
dans le programme précédant ? - Rappeler le rôle des paramètres de
range
- Vérifier que les instructions suivantes permettent de tracer les lignes verticales :
- Tracer les lignes horizontales en utilisant une boucle
for
Activité 4 : Instructions conditionnelles
On souhaite dessiner la figure suivante à l'aide du module turtle
de Python :
- Ecrire une fonction
carre(x,y,c)
qui trace le carré de côtéc
dont le coin inférieur gauche a pour coordonnées(x,y)
. - Ecrire une boucle à l'aide d'une instruction
for ... in range(....):
de façon à tracer la suite de carré bleu. -
Ajouter une instruction conditionnelle dans la boucle de façon à ce que le septième carré soit tracé en rouge et avec un crayon plus épais comme sur la figure.
Rappel
On rappelle que la syntaxe d'une instruction conditionnelle est :
if <condition>: <instructions1> else: <instructions2>
Activité 5 : Le problème de Josephus
Le but de l'activité est d'écrire un programme permettant de résoudre le problème de Joséphus en révisant les listes de Python.
- On représente un cercle de
n
soldats par la liste[1,2,...,n]
- Ecrire une fonction
soldats(n)
qui renvoie la liste[1,2,....,n]
- Verifier que
n
est bien un entier strictement positif à l'aide d'instructionassert
- Ajouter une chaîne documentation.
- Ecrire une fonction
-
Afin de repérer l'épée, on décide que le soldat qui la tient se situe toujours en première position de la liste.
-
Compléter l'évolution de la liste de soldat ci-dessous
Etat de la liste Explications [1, 2,3,4,5,6]1
élimine2
et passe l'épée à3
qui passe donc en tête de liste[3,...,5,6,1] 3
élimine...
et passe l'épée à...
qui passe donc en tête de liste[..., 6,1,3]...
élimine...
et passe l'épée à...
qui passe donc en tête de liste[...,...,...] ..... [...,...] ..... [...] ..... -
Compléter l'algorithme suivant d'évolution de la liste et indiquer les instructions Python correspondantes (on désigne par
cercle
la liste représentant le cercle de soldats):Etapes Opération sur la liste Instructions Python .......... tueur=cercle.pop(0)
Ajouter cet élément en fin de liste ...... Supprimer le premier élément ...... -
Quel est la condition d'arrêt de l'algorithme ?
- Exprimer cette condition par un test en python sur
cercle
-
-
Programmer une fonction
josephus(n)
qui renvoie le soldat survivant pour un cercle den
soldats.
Cours
Vous pouvez télécharger une copie au format pdf du diaporama de synthèse de cours présenté en classe :
Attention
Ce diaporama ne vous donne que quelques points de repères lors de vos révisions. Il devrait être complété par la relecture attentive de vos propres notes de cours et par une révision approfondie des exercices.
Exercices
Aide et Ressources
Pour les exercices avec le module TURTLE
, vous trouverez ci-dessous un résumé sur les commandes de Turtle.
Vous pouvez aussi consulter la page de documentation officielle du module
Exercice 1 : Figures géométriques avec Turtle
- Ecrire une fonction
rectangle(x,y,l1,l2)
qui trace le rectangle de dimensionsl1
l2
et dont le coin inférieur gauche à pour coordonnéesx
ety
. -
On peut remplir une surface construite avec un
crayon
du moduleturtle
:- Spécifier une couleur de remplissage par exemple
crayon.fillcolor(red)
- Au début du tracé de la figure écrire l'instruction
crayon.begin_fill()
- A la fin du tracé de la figure écrire l'instruction
crayon.end_fill()
Modifier votre fonction rectangle de façon à pouvoir tracer un rectangle rempli avec une couleur passée en paramètre.
- Spécifier une couleur de remplissage par exemple
Exercice 2 : Quelques figures avec turtle
Construire les figures suivantes (le repère est là pour vous aider et ne doit pas être reproduit):
- L'escalier
- Cercles concentriques (les couleurs alternent entre
blue
etlightblue
, le crayon a une épaisseur de 10, les cercles ont pour rayon 10,20,30, ...)
Exercice 3 : Pour réviser les listes
-
On considère le programme suivant :
liste1 = [0]*100 liste2 = [0 for k in range(100)] liste3 = [] for k in range(100): liste3.append(0)
- Quel est le contenu de chacune des listes ?
- Indiquer par quel procédé chacune de ces listes a été crée.
-
Ecrire un programme python permettant de créer les listes suivantes :
- Une liste contenant 12 fois le chiffre 7.
- La liste des nombres entiers de 1 à 100.
-
Une liste contenant 1000 nombres tirés au sort entre 1 et 6.
Aide
On rappelle que la fonction
randint
peut être importée depuis le modulerandom
, elle permet de tirer un nombre au hasard entre deux valeursa
etb
donnés en paramètres. -
La liste des cubes des entiers de 1 à 10.
Exercice 4 : Parcours de liste
- Ecrire une fonction
somme(l)
qui renvoie la somme des éléments de la listel
. Vérifier que tous les éléments del
sont biens des nombres entiers (int
) ou flottants (float
). -
Ecrire une fonction
indice(elt,l)
qui renvoie l'indice de la première apparition deelt
sielt
est dansl
et sinon.Exemples
indice(3,[1,2,3,5,7,11])
renvoie2
puisque3
est dans cette liste à l'indice 2.indice(13,[1,2,3,5,7,11])
renvoie-1
puisque13
n'est pas dans cette liste.
Exercice 5 : Polygone régulier
- Ecrire une fonction
triangle_equilateral(c)
qui trace un triangle équilatéral de côtec
à partir de la position courante de la tortue. - Ecrire une fonction
carre(c)
qui trace un carré de côtec
à partir de la position courante de la tortue. -
Ecrire une fonction
polygone_regulier(n,c)
qui trace un polygone régulier de côtec
à partir de la position courante de la tortue.Rappel
- Un polygone régulier est un polygone dont tous les côtés sont de la même longueur et tous les angles sont égaux.
- Les angles d'un polygone régulier à
côtés mesurent
Exercice 6 : Panneau de signalisation
Ecrire un programme Python permettant de dessiner le panneau de signalisation de votre choix. Quelques exemples sont proposés ci-dessous.