TP Initiation Python

Lancement de la console

Ouvrir le logiciel Pyscripter puis copier coller le programme ci-dessous dans l'éditeur.
from turtle import * # obligatoire au début de chaque fichier
# les commentaires sur le programme sont situés après le signe dièse

reset() # efface le dessin précédent
color('red') # choisis la couleur demandée

goto(100,100) # se rend au point de coordonnées (100,100)

color('blue') # choisis la couleur demandée

up() # lève le crayon
goto(0,0) # se rend au point de coordonnées (0,0)
down() # baisse le crayon

left(90) # tourne à gauche d'un angle de 90°
forward(100) # avance d'une distance de 100

done() # obligatoire à la fin de chaque fichier

Dans votre espace personnel, créer un dossier Python et enregistrer ce programme sous le nom TraceSegment.py

Les commentaires (précédés d'un dièse) ne sont pas interprétés par la machine.

Exécuter ce module en cliquant sur la flèche verte ou bien avec F5

Les instructions

Déplacements

Comme avec Scratch, il existe 2 manières de se déplacer :

Exercice 1

Pour chaque question de chaque exercice, créer un nouveau fichier et l'enregistrer sous un autre nom dans votre répertoire personnel.
N'oublier pas l'extension .py à la fin de chaque nom de fichier.

Après chaque fichier, appeller le prof pour vérifier !
  1. Fichier Segment_rouge.py : Tracer en rouge un segment qui relie les points de coordonnées (– 200 , 0) et (150 , 250).
  2. Fichier Segment_vert.py : Tracer en vert un segment qui a pour origine le point de coordonnées (– 100 , 100) et qui avance de 200, puis un 2ème segment de 200 qui forme un angle de 220° avec l'horizontale.
  3. Fichier Segments_bleus.py : Tracer en bleu deux segments perpendiculaires.

Les boucles bornées

Exercice 2

  1. Tracer en orange un carré de côté 100 à l'aide de la fonction goto() sans right ni left.
  2. Tracer en rose un carré de côté 100 sans utiliser la fonction goto().
  3. Tracer en violet un hexagone de côté 100.
On s'aperçoit très vite qu’on répète plusieurs mêmes instructions !

On peut donc utiliser une boucle avec la syntaxe :
for i in range(4):
	forward(120)
	left(90)
range(4) désigne les 4 premiers entier en partant de 0.
La variable i prend donc successivement les valeurs 0, 1, 2 et 3.

Le bloc des instructions répétées commence après le symbole : (deux points) et est matérialisé par le fait de décaler vers la droite (on dit indenter) les instructions.
Ce bloc se termine par le fait de revenir tout à gauche de la ligne en supprimant la tabulation.

Exercice 3

En utilisant la boucle for :
  1. Tracer en jaune un carré de côté 150.
  2. Tracer en violet un hexagone de côté 100.
  3. Reproduire la figure ci-dessous, où tous les carrés sont de côté 50.

Les blocs et l'indentation

Comme avec Scratch, les éditeurs de langage de programmation permettent de donner une visualisation aux différents blocs.

Cela s'appelle l'indentation : on décale vers la droite les instructions qui appartiennent à la boucle. Lorsque l'on revient à gauche, cela signifie que la boucle est terminée.

Les fonctions

On peut en Python (et dans la plupart des langages de programmation) donner un nom à un bloc d'instructions, de la façon suivante :
def carre():
	for i in range(4):
		forward(50)
		left(90)
De cette manière, à chaque fois qu'on écrira carre() dans le programme principal, on exécutera en réalité ces trois instructions. On appelle ce bloc une fonction (ce qui n'est pas tout-à-fait la même chose qu'une fonction au sens mathématique).

Par exemple, pour reproduire la figure 3 de l'exercice 3 en définissant la fonction carre(),on pourrait écrire un programme tel que celui donné ci-dessous :
from turtle import *

def carre ():
	"""Cette fonction trace un carré"""
	for i in range(4):
		forward(50)
		left(90)

# debut du programme principal
color('red')

for i in range(6): # boucle pour répéter 6 fois
	carre() # appel de la fonction carre dans le programme principal
	forward(50)

done()

Exercice 4

  1. Copier coller le programme ci-dessus, l'enregistrer sous 4carres.py et l'exécuter
  2. Modifier ce fichier pour tracer la figure ci-dessous
Si maintenant on souhaite tracer un carré de taille différente à chaque fois, on peut fournir des arguments à notre fonction qui modifieront son comportement. Pour la fonction carre() par exemple, on peut choisir la longueur des côtés du carré. Voici ce qu'on écrit :
def carre(longueur):
	for i in range(4):
		forward(longueur)
		left(90)

Exercice 5

Tracer la figure suivante. Le plus petit carré a un côté de longueur 20 et l'enregistrer sous 5carres.py.

Les variables

Le processus pour créer ou modifier une variable est simple avec Python.

Exercice 6

  1. Reproduire la figure ci-dessous, où le plus petit carré est de côté 50.
  2. Construire la figure similaire formée de n carrés emboîtés.

Exercice 7

  1. Deviner quelle figure trace l'algorithme suivant :
    Pour I allant de 1 à 360
    	Avancer de 1
    	Tourner à gauche de 1°
    FinPour
    
  2. Programmer cet algorithme en Python dans un nouveau fichier nommé Mystere1.py et vérifier votre conjecture.
  3. On souhaite modifier cet algorithme pour réaliser la même figure en pointillés.
    Pour cela, tous les 10 « pas », on lèvera ou on abaissera le crayon, inspirez-vous de ce qui suit :

Les boucles non bornées

On souhaite construire la figure ci-dessous à partir d'un grand carré de côté c en continuant à diviser le carré en bas à gauche « indéfiniment ».

En réalité, à partir du moment où ce carré a pour côté 1 ou moins, il n'est plus nécessaire de le tracer puisque l'ordinateur ne saura pas l'afficher.
Il faut donc utiliser une boucle "Tant que".

En Python, celle-ci se nomme while, ce qui signifie « répéter Tant que ».
Utiliser le programme ci-dessous pour découvrir la syntaxe à utiliser :
from turtle import *

c = 256

for i in range(4):
	forward(c)
	left(90)

while c >= 1:
	up()
	goto(0,c/2)
	down()
	goto(c,c/2)
	up()
	goto(c/2,0)
	down()
	goto(c/2,c)
	up()
	goto(0,0)
	down()
	c = c/2

done()

Exercice 8

Devinez (sans lancer le programme) ce que fait chaque instruction dans ce programme et le résultat obtenu à l'issue de l'exécution.

Vérifiez ensuite vos conjectures en copiant le programme dans un fichier nommé Mystere2.py.
from turtle import *

up()
goto(-200,-100)
down()
i=0
while i < 12:
	forward(400)
	left(150)
	i = i + 1

done()

Exercice 9

  1. Tracer le carré extérieur de côté, puis tracer les n carrés intérieurs dont les sommets sont placés sur les milieux des côtés du carré précédent.
  2. Proposer également une version de ce dessin où on construit les carrés intérieurs « à l'infini », en tous cas tant qu'ils sont visibles !