Programmer en Python en 2nde

La tortue : quelques exercices de Brevet

Crédits

Toute la structure html/css/js et une grande partie du contenu ont été réalisés par Nicolas Buyle-Bodin professeur au lycée Lacassagne, avec l'aide de Jean-Manuel Mény, professeur au lycée de la plaine de l'Ain. Ils ont travaillé pendant plusieurs centaines d'heures pour créer un site de formation à destination des enseignants du secondaire de l'académie de Lyon d'une grande qualité visible sur le portail Mathématiques du site académique. Ils ont eu la gentillesse de placer leur code source sous licence Creative Commons BY-NC-SA Respect de la Paternité - Pas d'utilisation commerciale - Partage des conditions initiales à l'identique..

Nous les en remercions chaleureusement.

Préambule

La liste complète des fonctions disponibles grâce au module turtle est disponible sur la documentation officielle.
On pourra aussi télécharger un petit résumé au format .pdf en cliquant ici.

Extrait du sujet Métropole 2017.

metropole 2017
  1. Traduire le programme proposé avec le module turtle de Python.
  2. Donner de même le script modifié demandé en question 4. Attention, en Scratch lorsque la tortue son orientation est de $90$ degrés alors que dans le module turtle, elle est de $0$ degrés.

					
					
  • Question 1
  • Question 2

Une version « classique » :


from turtle import *

def triangle(cote):
	down()				# on pose le crayon
	for i in range(3):
		forward(cote)		# on avance de la longueur cote
		left(120)			# tourne à gauche de 120 degrés
	up()					# on relève le crayon
		
	
	
def aller_a_sans_tracer(x, y) :
	""" On place la tortue en (x,y) sans tracer."""
	up()
	goto(x, y)
	down()

##----- Initialisation du tracé -----##
reset()						# effacer tout
aller_a_sans_tracer(-200, -100) 
setheading(0)				# orientation vers la droite 
cote = 100

##----- Le tracé -----##
for i in range(5):
	triangle(cote)
	forward(cote)
	cote = cote-20

exitonclick() 

Une version « classique » :


from turtle import *

def triangle(cote):
	pendown()				# on pose le crayon
	for i in range(3):
		forward(cote)		# on avance de la longueur cote
		left(120)			# tourne à gauche de 120 degrés
	penup()					# on relève le crayon
		
	
	
def aller_a_sans_tracer(x, y) :
	""" On place la tortue en (x,y) sans tracer."""
	up()
	goto(x, y)
	down()

##----- Initialisation du tracé -----##
reset()						# effacer tout
aller_a_sans_tracer(-200, -100) 
setheading(0)				# orientation vers la droite 
cote = 100

##----- Le tracé -----##
for i in range(5):
	triangle(cote)
	forward(cote)
	left(60)
	cote = cote-20

exitonclick() 

Extrait du sujet Centres Étrangers 2017.

CE 2017
  1. Traduire le script de l'énoncé avec le module turtle de Python.
  2. Répondre à la question 2 expérimentalement avec un script.
  3. Modifier votre script Python de façon à ajouter une "belle sortie de cheminée".

					
					
  • Questions 1 et 2
  • Question 3

On a ajouté des instructions d'affichage des coordonnées de la tortue lorsqu'elle se trouve au point de départ et lorsqu'elle arrête de construire.


from turtle import * 


# même fenêtre que scratch : 
xmin, ymin = -240, -180
xmax, ymax = 240, 180
fenetre = Screen()
fenetre.setworldcoordinates(xmin, ymin, xmax, ymax)
  


def maison() :
	left(90)
	forward(50)
	right(45)
	forward(50)
	right(90)
	forward(50)
	right(45)
	forward(50)
	left(90)
	
	
def drapeau(n) :
	# cacher tortue :
	hideturtle()
	# taille du stylo à 1 :
	pensize(1)
	# effacer tout :
	reset()
	# aller à (-240; 0) sans tracer :
	up()
	goto(-240, 0)
	# pour vérifier coordonnées tortue 
	# (affichage dans le terminal) : 
	print(pos())
	# stylo en position d'écriture :
	down()
	# s'orienter à 0 (vers la droite) 
	# Par défaut en scratch  0 vers le haut, 90 vers la droite.
	# Par défaut, la tortue : comme cercle trigo math. 
	setheading(0)
	# n répétitions :
	for k in range(n) :
		maison()
		forward(20)
	# pour vérifier coordonnées tortue 
	# (affichage dans le terminal) : 
	print(pos())
	
	
	
drapeau(5)		
		
exitonclick()

On obtient :

maisons

Et dans le terminal :

positions extrêmes

from  turtle import *
from math import sqrt

# même fenêtre que scratch : 
xmin, ymin = -240, -180
xmax, ymax = 240, 180
fenetre = Screen()
fenetre.setworldcoordinates(xmin, ymin, xmax, ymax)
  

def maison() :
	# mur gauche :
	left(90)
	forward(50)
	# pan toit gauche :
	right(60)
	forward(24)
	# mur gauche de la sortie de cheminée :
	left(60)
	forward(13)
	# dessus cheminée :
	right(90)
	forward(5 * sqrt(3))
	# mur droit sortie cheminée :
	right(90)
	forward(8)
	# fin pan toit gauche :
	left(90 + 30)
	forward(16)
	# pan toit droit : 
	right(2*30)
	forward(50)
	# mur droit :
	right(60)
	forward(50)
	left(90)
	
	
def drapeau(n) :
	# cacher tortue :
	hideturtle()
	# taille du stylo à 1 :
	pensize(1)
	# effacer tout :
	reset()
	# aller à (-240; 0) sans tracer :
	up()
	goto(-240, 0)
	# stylo en position d'écriture :
	down()
	# s'orienter à 0 (vers la droite) 
	# Par défaut en scratch  0 vers le haut, 90 vers la droite.
	# Par défaut, la tortue : comme cercle trigo math. 
	setheading(0)
	# n répétitions :
	for k in range(n) :
		maison()
		forward(20)
	
drapeau(4)		
exitonclick()

On obtient :

avec cheminées