Activité 1 : Module turtle de Python¶
In [ ]:
# Créé par Andjekel, le 27/08/2024 en Python 3.7
import turtle
# Création du "papier" et du "crayon"
crayon = turtle.Turtle()
papier = turtle.Screen()
# Taille, dimension, vitesse et couleur pour le papier et le crayon
papier.bgcolor("beige")
papier.setup(width=500,height=500)
crayon.speed(10)
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)
# 1.b) Voir les commandes Turtles : https://www.levavasseur.xyz/NSI_T/Revisions/Resume_Turtle.pdf
# 1.c) Tracé des deux traits horizontaux manquants
crayon.penup()
crayon.goto(-150,50)
crayon.pendown()
crayon.goto(150,50)
crayon.penup()
crayon.goto(-150,-50)
crayon.pendown()
crayon.goto(150,-50)
# 2.) tracé' un cercle au centre de la grille de morpion
crayon.color("darkred")
crayon.pensize(7)
crayon.penup()
crayon.goto(40,0)
crayon.pendown()
crayon.circle(40)
# masque le crayon à la fin du tracé
crayon.hideturtle()
# Attends un clic pour fermer la fenêtre de dessin
papier.exitonclick()
try:
turtle.bye()
except turtle.Terminator:
pass
Activité 2 : De l'utilité des fonctions¶
Question 1
In [ ]:
import turtle
# Création du "papier" et du "crayon"
crayon = turtle.Turtle()
papier = turtle.Screen()
# Taille, dimension, vitesse et couleur pour le papier et le crayon
papier.bgcolor("beige")
papier.setup(width=500,height=500)
crayon.speed(10)
crayon.color("navy")
crayon.pensize(5)
# la définition d'une fonction en Python commence par " def "
# Fonction ligne
def ligne(x1,y1,x2,y2):
"""
Cette fonction trace une ligne entre deux points
@ entré : x1: entier - abscisse du point de départ
y1: entier - ordonnée du point de départ
x2: entier - abscisse du point de d'arrivée
y2: entier - ordonnée du point de d'arrivée
@ sortie : le tracée de la ligne
"""
crayon.penup()
crayon.goto(x1,y1)
crayon.pendown()
crayon.goto(x2,y2)
ligne(-50, 150, -50, -150)
ligne(50, 150, 50, -150)
ligne(-150, 50, 150, 50)
ligne(-150, -50, 150, -50)
# tracéd' un cercle au centre de la grille de morpion
crayon.color("darkred")
crayon.pensize(7)
crayon.penup()
crayon.goto(0,-40)
crayon.pendown()
crayon.circle(40)
# masque le crayon à la fin du tracé
crayon.hideturtle()
# Attends un clic pour fermer la fenêtre de dessin
papier.exitonclick()
Question 2
In [ ]:
import turtle
# Création du "papier" et du "crayon"
crayon = turtle.Turtle()
papier = turtle.Screen()
# masque le crayon à la fin du tracé
crayon.hideturtle()
# Taille, dimension, vitesse et couleur pour le papier et le crayon
papier.bgcolor("beige")
papier.setup(width=500,height=500)
crayon.speed(10)
crayon.color("navy")
crayon.pensize(5)
# 2. Fonction ligne
def ligne2(x,y,l,d):
"""
Cette fonction trace une ligne entre deux points
@ entré : x: entier - abscisse du point de départ
y: entier - ordonnée du point de départ
l: entier - longueur du segment
d: entier - direction en angle
@ sortie : le tacée de la ligne
"""
crayon.penup()
crayon.goto(x,y)
crayon.pendown()
crayon.setheading(d)
crayon.forward(l)
# 3. Fonction cercle
def cercle(x,y,r):
"""
Cette fonction trace une cercle connaissant son centre et son rayon.
@ entré : x: entier - abscisse du centre
y: entier - ordonnée centre
r: entier - le rayon
@ sortie : le tracée du cercle
"""
crayon.penup()
crayon.goto(x,y)
crayon.pendown()
crayon.setheading(90)
crayon.circle(r)
# 4. Fonction croix
def croix(x,y,l):
"""
Cette fonction trace une croix connaissant son centre et la
longueur d'une branche.
@ entré : x1: entier - abscisse du centre
y1: entier - ordonnée centre
l: entier - longueur de la branche
@ sortie : le tracée de la croix
"""
crayon.penup()
for angle in range(45, 360, 90):
crayon.goto(x,y)
crayon.pendown()
crayon.setheading(angle)
crayon.forward(l)
crayon.penup()
ligne2(-150, 50, 300, 0)
ligne2(-150, -50, 300, 0)
ligne2(50, -150, 300, 90)
ligne2(-50, -150, 300, 90)
# tracé d'un cercle au centre de la grille de morpion
crayon.color("darkred")
crayon.pensize(7)
cercle(40, 0, 40)
# tracé d'une croix das une case de la grille de morpion
crayon.color("green")
crayon.pensize(7)
croix(100, 100, 40)
croix(0, 100, 40)
Activité 3 : Une boucle pour répéter
Activité 3 : Une boucle pour répéter¶
In [ ]:
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)
crayon.speed(50)
def ligne(x1,y1,x2,y2):
crayon.penup()
crayon.goto(x1,y1)
crayon.pendown()
crayon.goto(x2,y2)
# 1- Tracé des lignes horizontales
for ord in range(-200, 250, 50):
ligne(-200, ord, 200, ord)
# 2- Tracé des lignes verticales
for abs in range(-200, 250, 50):
ligne(abs, -200, abs, 200)
# masque le crayon à la fin du tracé
crayon.hideturtle()
# Attends un clic pour fermer la fenêtre de dessin
papier.exitonclick()
Activité 4 : Instructions conditionnelles¶
In [1]:
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)
crayon.speed(50)
# création fonction carré
def carre(x,y,c):
crayon.penup()
crayon.goto(x,y)
crayon.pendown()
for angle in range(0, 360, 90):
crayon.setheading(angle)
crayon.forward(c)
# 3- Tracé une suite de carrés bleus, le 7ème est rouge
compteur = 1
for val in range(-200, 250, 50):
if compteur == 7:
crayon.color("darkred")
else:
crayon.color("navy")
carre(val, val, 40)
compteur = compteur + 1
#masque le crayon à la fin du tracé
crayon.hideturtle()
# Attends un clic pour fermer la fenêtre de dessin
papier.exitonclick()
Activité 5 : Le problème de Josephus¶
Question 1 a - b - c¶
In [ ]:
def soldats(n):
"""
Cette fontion renvoie une liste d'entiers positfs
entré :n - un entier non nul
sortie :une liste
"""
assert type(n) == int and n > 0 , "on doit avoir un entier"
liste = []
for i in range(1, n+1):
liste.append(i) # liste = liste + [i]
return liste
assert type(soldats(10)) == list
soldats(10)
In [ ]:
def soldats(n):
"""
entré : un entier non nul
sortie : une liste
"""
assert type(n) == int and n > 0 , "on doit avoir un entier"
return [i for i in range(1, n+1)]
assert type(soldats(10)) == list
soldats(10)
Question 2 a : Evolution de la liste des soldats
Question 2 b : Algorithme suivant d'évolution de la liste et les instructions Python
Question 2 c :
La condition d'arrêt: l'algorithme s'arrète lorsque la liste contient plus qu'un élément.
Question 2 d :
if len(cercle) == 1:
On peut aussi utiliser : while len(cercle) > 1:
Question 3 :
In [ ]:
def josephus(n):
cercle = soldats(n) # On utlise la fonction crée à la question 1
while len(cercle) > 1:
tueur = cercle.pop(0)
cercle.append(tueur)
cercle.pop(0)
return cercle
josephus(12)
In [ ]:
# Solution pour n = 6 . Valeur de la question 2
josephus(6)
In [ ]:
josephus(15)
In [ ]:
josephus(8)
In [ ]:
josephus(9)
In [ ]: