LANGAGE PYTHON



Structures répétitives: les boucles


 Les boucles sont utilisées pour répéter un certain nombre de fois un ensemble d'instructions ou les répéter tant que certaines conditions sont vraies.


Partie A:


  • Boucle for...in range (...)  dite boucle bornée


La boucle basée sur l'instruction for ... in range(...) est utilisée quand on connaît  à l'avance le nombre de fois qu'une boucle doit s'exécuter.


Le principe est d'utiliser la fonction range(...) qui définit une suite de nombres, le programme bouclera tant qu'il restera un nombre à générer de la suite.

Pour définir la suite, la fonction range prend trois paramètres dans ses parenthèses ( à la place des pointillés) , le premier paramètre est le premier nombre de la suite, le second paramètre est la valeur d'arrêt de la boucle ( quand la suite atteint ce nombre la boucle s'arrête), le troisième paramètre est le pas entre d'évolution entre deux valeurs, exemple:

for _ in range (0, 9, 1)  va générer la suite 0,1,2,3,4,5,6,7,8  soit 9 tours de boucle. La plage de la suite est [0, 9[ avec un pas de 1

Quand la valeur de départ est 0 et que le pas est 1, on peut enlever des parenthèses la valeur de départ et le pas,  la boucle peut s'écrire for _ in range(9)


Si le premier nombre n'est pas 0 et si le pas n'est pas 1, il faut les préciser, exemple:

for _ in range (1, 10, 2)  va générer la suite 1,3,5,7,9 soit 5 tours de boucle. La plage de la suite est [1, 10[  avec un pas de 2



On peut associer une variable pour "voir" chaque nombre de la suite. Cette variable se place entre les mots clés for et in.

Ce que l'on veut répéter en boucle doit être décalé par rapport au for, par exemple ci-dessous l'instruction print(..)


# variable x sera dans la plage [0, 9[ avec pas d'évolution de 1

for x in range (9):

    print(x)



Il est possible d'afficher la suite de nombres "sur une seule ligne" au lieu de "à la ligne",  pour çà on renseigne un paramètre appelé end placé en dernier paramètre dans le print et on l'associe à un caractère délimiteur:



Exemples:


# x est dans la plage [0, 9[ avec pas de 1

for x in range (9):

    # le caractère délimiteur est ";"

    print( x, end = ";" )


donnera:



# x est dans la plage [0, 9[ avec pas de 1

for x in range (9):

    # le caractère délimiteur est ":"

    print( x, end = ":" )


donnera:



Si on veut commencer à 1, on doit le préciser dans le range en premier paramètre à 1 :


# x est maintenant dans la plage [1, 9[ avec un pas de 1

for x in range (1, 9):

    print( x, end = ";" )


donnera:



 Si on change le pas d'évolution, on doit ajouter le troisième paramètre:


# x est dans la plage [1, 9[ avec pas de 2

for x in range (1, 9, 2):

    print( x, end = ";" )


donnera:




On peut aussi décompter avec une boucle:


# x est dans la plage [9, 1[ avec pas de -1

for x in range (9, 1, -1):

    print( x, end = ";" )



# x est dans la plage [9, -1[ avec pas de -1

for x in range (9, -1, -1):

    print( x, end = ";" )



Exercice 1  (du chapitre structures répétitives)

1.1  Écrire un programme, avec une boucle for, qui permet d'obtenir le rendu suivant:


 


1.2  Écrire un programme, avec une boucle for, qui permet d'obtenir le rendu suivant:



Partie B: utilisation du deboggeur



Exercice 2  (du chapitre structures répétitives)


On cherche à comprendre le code ci-dessous:


x=4

for x in range(5):

    print ("Avant le if, la valeur de x vaut ", x, end="\n" )

    # si le reste de la division par 2 est égale à 0:

    if x % 2 == 0:

        print ("le if est True", end=":")

        # affecter à la variable x la valeur de 2 fois l'ancienne valeur de x

        x = 2*x

        print ("la nouvelle valeur de x vaut ", x )

    else:

        print (f"le if est False: la valeur de x = {x}", end="\n")

y=2

print (f"après la boucle for: la valeur de x={x} + y={y} vaut", x+y, end="\n")


On numérote les lignes de code


 1    x=4

 2    for x in range(5):

 3        print ("Avant le if, la valeur de x vaut ", x, end="\n" )

          # si le reste de la division par 2 est égale à 0:

 4        if x % 2 == 0:

 5            print ("le if est True", end=":")

              # affecter à la variable x la valeur de 2 fois l'ancienne valeur de x

 6            x = 2*x

 7            print ("la nouvelle valeur de x vaut ", x )

 8        else:

 9            print (f"le if est False: la valeur de x = {x}", end="\n")

 10   y=2

 11   print (f"après la boucle for: la valeur de x={x} + y={y} vaut", x+y, end="\n")


2.1 Recopier puis compléter, sur votre compte rendu, le tableau ci-dessous d'évolution des variables x et y durant l'exécution du code:


Vous devez utiliser le debuggeur du logiciel.  Cliquer-ici pour regarder la vidéo sur l'utilisation du débogueur de VS Code.

ATTENTION VOTRE NUMEROTATION DES LIGNES DE CODE PEUT ÊTRE DIFFERENTE, le nombre de lignes du tableau ci-dessous ne correspond pas à tous les cas  (  des lignes pourront rester vide ou vous devrez en rajouter )


Ligne de code

valeur de x

valeur de y

Ligne 1

4

 y  n'existe pas

Ligne 2

 x est fixé par le range(5)

2

y  n'existe pas



















































































2.2  Donner l'affichage du code.



Partie C


Avec une boucle on peut créer un accumulateur, c'est à dire une variable associée à une valeur qui augmente.

somme = somme + 1 veut dire:  nouvelle valeur associée à la variable somme = ancienne valeur associée à la variable somme + 1

ce qui peut aussi se coder somme +=1  


# la variable somme est associée au nombre 0

somme = 0

print("au départ la variable somme est associée au nombre:", somme)

for x in range(1,4):

    # la variable somme augmente de 1 à chaque tour de boucle:

    somme += 1

    print( "la variable somme est maintenant associée au nombre: ", somme)


donnera:



Si le code était:


somme = 0

print("au départ la variable somme est associée au nombre:", somme)

for x in range(1,4):

    # la variable somme augmente de x à chaque tour de boucle:

    somme = somme + x

    print( "la variable somme est maintenant associée au nombre: ", somme)


l'affichage serait :




Voici un programme qui fait la somme de notes saisies au clavier:


somme = 0

# la variable notes contient le nombre de notes:

max = eval( input("Entrez combien vous avez de notes \n"))

# récupération des notes

for x in range(1, max+1):

    # on demande la note et on l'associe à la variable note:

    note = eval( input("entrez votre note: \n"))

    # on l'ajoute le nombre associé à note à la somme précédente:

    somme = somme + note

    # on affiche la valeur de la somme:

    print( "la variable somme est maintenant associée au nombre: ", somme)


Exécution:



Exercice 3


Ajouter au code précédent une variable appelée moyenne associée au nombre 0 que vous placerez avant la boucle.

Modifier le code pour qu'il utilise la variable moyenne et la valeur finale associée à la variable somme pour calculer la moyenne des notes saisies et l'affiche à l'écran.



Partie C:  Boucle while


il y a des circonstances où on ne sait pas à l'avance combien de fois il va falloir tourner en boucle, dans ce cas là on utilise une boucle while associée à une condition, tant que cette condition sera vraie, le programme tournera en boucle.


lettre = input("entrer un caractère du clavier")

# tant que la variable lettre n'est pas associée au caractère m:

while lettre != 'm':

    print("ce n'est pas le caractère attendu")

    lettre = input("entrer un autre caractère du clavier")

print("au revoir")



Ci-dessus tant que l'utilisateur saisit un autre caractère que m, le programme tourne en boucle parce que la condition "lettre est différent de m" est True.


Exercice 4


Écrire un programme avec une boucle while qui demande à l'utilisateur "voulez-vous continuer ( répondre oui ou non)? ",  tant que la réponse sera différente de non, le programme affichera "on continue alors" et reposera la question  "voulez-vous continuer ( répondre oui ou non)? ".

Si l'utilisateur répond non, la boucle s'arrête et le programme affiche "au revoir" et se termine

 


Créé avec HelpNDoc Personal Edition: Générateur de documentation et EPub facile