HomeTortue graphiqueGPanelRobotique WebTigerPython
 Python - Online
while&for
Deutsch   English   Français   

10. WHILE & FOR

 

 

TU APPRENDRAS ICI...

 

comment utiliser les structures répétitives avec les mots-clés while et for. La boucle while est l'une des structures de programmation les plus importantes. Elle peut être utilisée pour toutes sortes de répétitions et existe dans pratiquement tous les langages de programmation.

Jusqu'à présent, tu pouvais programmer des répétitions simples avec repeat, sans utiliser de variables. Maintenant que tu connais la notion de variable, tu peux également utiliser les structures while et for.

 

 

EXEMPLES DE BOUCLES WHILE

 

Une boucle while commence par le mot-clé while, suivi d'une condition et de deux-points. Tant que la condition est remplie, les instructions du bloc de programme qui suit sont répétées.

Dans la condition, on utilise généralement les opérateurs de comparaison >, >=, <, <=, ==, !=. Les instructions du bloc while doivent être indentées.

Dans le langage courant, cette structure répétitive peut être formulée ainsi : « Tant que la condition suivante est remplie, exécute le bloc de programme qui suit. »

Les boucles while sont particulièrement utiles lorsque le nombre de répétitions n'est pas connu à l'avance.

Dans ton exemple, le segment le plus long de la spirale doit être inférieur à 200.

Tu commences avec une longueur a = 5. Tant que a < 200, tu augmentes la longueur du segment de 2 après chaque rotation.

 

 

Programme::    

from gturtle import *

makeTurtle()
a = 5
while a < 200:
    forward(a) 
    right(90)
    a = a + 2
► Copy to clipboard


 

Boucle while infinie
La tortue se déplace « indéfiniment » sur un cercle. Les mots-clés while True: i permettent de créer une boucle while dite infinie.

Les instructions du bloc sont répétées jusqu'à ce que tu arrêtes le programme en cliquant sur le bouton rouge « Stop ».

 

Programme:    

from gturtle import *

makeTurtle()

while True:
    forward(3)
    right(3)
► Copy to clipboard

 

 

À RETENIR...

 

La condition a < 200est également appelée condition de continuation de la boucle.

Avec while True, on crée une boucle infinie dans laquelle les instructions sont répétées jusqu'à ce que l'on appuie sur « Stop ».

 

 

EXERCICES À RÉSOUDRE TOI-MÊME


  1.

La tortue dessine des triangles équilatéraux. Le premier triangle a des côtés de longueur s = 300, le deuxième de 290, le troisième de 280, etc.

Après chaque triangle, la tortue tourne de 10° vers la droite. Elle arrête de dessiner lorsque la longueur du côté devient inférieure à 10.

 

  2.

La tortue se déplace indéfiniment, par petits pas, en faisant des allers-retours entre x = -250 et x = 250.

Utilise une condition avec la fonction getX(), qui renvoie la coordonnée x actuelle.

 

 

  3.

Complète le programme « Random Walk » du chapitre sur les nombres aléatoires de la manière suivante :

  • La tortue avance de 30 pas dans une direction choisie au hasard et dessine un point.

  • Après chaque point dessiné, tu détermines la distance au point de départ avec d = distance(0, 0).

  • Si la distance est supérieure à 200, le programme s'arrête.

  • Compte le nombre de segments parcourus par la tortue avant d'atteindre la distance de 200.

Exécute le programme plusieurs fois. Existe-t-il des cas où la tortue ne parvient pas à sortir de son « ghetto » ?

 

 

 

EXEMPLES DE BOUCLES FOR

  Dans une boucle for, le compteur de boucle est modifié automatiquement.

La tortue avance d'une distance s, puis tourne de 70° vers la droite. Après chaque répétition, s augmente de 1. Le compteur de boucle est utilisé pour déterminer la longueur du segment.

Avec for s in range(100): , on parcourt les nombres 0, 1, 2, ..., 99. Le bloc de la boucle est donc répété 100 fois.

 

Programme:    

from gturtle import *

makeTurtle()
hideTurtle()

for s in range(100):
    forward(s)
    right(70)
► Copy to clipboard

Tu peux également dessiner la figure suivante avec deux boucles repeat. Cependant, comme tu as besoin de la variable i dans la boucle intérieure pour calculer la longueur des segments, l'utilisation d'une boucle for est plus avantageuse. Fais attention à respecter l'indentation !

Programme:    

from gturtle import *

makeTurtle()
setPenColor("blue")

repeat 5:
    for i in range(12):
        forward(12 * i)
        left(144)
hideTurtle()
► Copy to clipboard
 

La forme générale d'une boucle for comporte trois paramètres :
for i in range(start, stop, step):
Le premier paramètre indique la valeur initiale de la variable i. Tant que i est inférieur à stop, la boucle est répétée. À chaque répétition, i augmente de la valeur step. Dans l'exemple suivant, tu utilises une boucle for pour déterminer les coordonnées des points.

Programme:    

from gturtle import *

makeTurtle()

for x in range(-240, 250 , 20):    
    setPos(x, 0)
    dot(15)
► Copy to clipboard
 

 

 

À RETENIR...

 

Avec for i in range(n): on parcourt les nombres 0, 1, 2, ..., (n-1). Le paramètre n dans range(n) indique le nombre de répétitions.

Une boucle for peut également avoir 2 ou 3 paramètres.
for i in range(5, 20) : parcourt les nombres 5, 6, 7, 8.....19. (step = 1).
for i in range(5, 20, 3) : parcourt les nombres 5, 8, 11, 14, 17.

 

 

EXERCICES À RÉSOUDRE TOI-MÊME


  4.

Pour créer la figure ci-contre, utilise une boucle for afin de dessiner 20 hexagones dont les côtés sont de plus en plus longs.

def hexagon(i):
    repeat 6:
        forward(i)
        right(60)
 

  5.

La tortue avance, dessine un disque (dot), puis recule jusqu'à son point de départ et tourne de 10° vers la droite. À chaque répétition, elle parcourt une distance plus grande.

Résous cet exercice avec une boucle for et utilise un multiple du compteur de boucle i pour déterminer la longueur du déplacement.

 

  6.

Crée la figure ci-contre avec une boucle for.

La tortue commence par avancer d'une distance s, puis tourne de 89° vers la droite.

La valeur de s doit varier de 0 à 150.

 

 

 

POUR ALLER PLUS LOIN : BOUCLES FOR IMBRIQUÉES

 


Les boucles for peuvent facilement être « imbriquées ». Dans cet exemple, pour chaque coordonnée x, la boucle for intérieure parcourt toutes les coordonnées y. Comme le pas (step) est égal à 20 dans les deux boucles, x et y augmentent de 20 à chaque itération de leur boucle respective.

Tu choisis 201 comme valeur de stop afin que les coordonnées x = 200 et y = 200 soient également prises en compte.

 


Programme:    

from gturtle import *

makeTurtle()

for x in range(-200, 201, 20):
    for y in range(-200, 201, 20):   
        if x + y < 0:
            setPenColor("red")
        else:
            setPenColor("green")
        setPos(x, y)
        dot(10) 
► Copy to clipboard

 


Avec cette méthode, tu peux dessiner un échiquier. Tu comprendras facilement qu'il faut dessiner un carré rempli chaque fois que la somme des indices de ligne et de colonne est un nombre pair.

Comme chaque case mesure 30 × 30, la case (i, k) est dessinée à la position
x = 30 * i, y = 30 * k.

 

Programme:    

from gturtle import *

def cell(x, y):
    setPos(x, y)
    startPath()
    repeat 4:
        forward(30)
        left(90)
    fillPath()    

makeTurtle()
setFillColor("blue")
hideTurtle()
for i in range(8):
    for k in range(8):
        if (i + k) % 2 == 0:
            cell(30 * i, 30 * k)
► Copy to clipboard