Les boucles
Comme je vous ai dit dans le chapitre précédent, je vais vous apprendre une technique pour faire une
punition de beaucoup de ligne en 30 secondes maximum. Bien sûr elle ne sera pas utile car je ne pense pas
que votre professeur veuille une punition qui n'est pas faite à la main. Cette technique servira sûrement
pour autre chose dans vos programmes.
La boucle "while"
Comme vous êtes gentil, je vais réduire votre punition de 500 lignes à 10 lignes.
Pour que vous puissiez faire la punition, vous devez utiliser une boucle.
Une boucle c'est quelque chose qui tourne en rond et qui fait toujours la même chose.
Prenons pour exemple le cycle de l'eau. Il commence sa vie dans les nuages puis tombe avec la pluie,
glisse ensuite le long des montages, va dans les fleuves puis dans la mer et pour finir s'évapore.
Et retombe des nuages et ainsi de suite.
Il fait donc toujours la même chose, il fait une boucle.
Pour la programmation c'est la même chose. Les boucles servent à faire toujours la même chose en
quelques lignes et en gagnant du temps.
Pour cela on utilise le mot clés "
while ... :" qui peut être traduit par "tant que ...".
Je suis donc puni à faire une punition de 10 lignes. Je dois écrire : "Je ne dois pas frapper mon
ordinateur quand il ne fonctionne pas correctement."
Je pourrai faire ce code :
print ("Je ne dois pas frapper mon ordinateur
quand il ne fonctionne pas correctement.")
print ("Je ne dois pas frapper mon ordinateur
quand il ne fonctionne pas correctement.")
print ("Je ne dois pas frapper mon ordinateur
quand il ne fonctionne pas correctement.")
print ("Je ne dois pas frapper mon ordinateur
quand il ne fonctionne pas correctement.")
print ("Je ne dois pas frapper mon ordinateur
quand il ne fonctionne pas correctement.")
print ("Je ne dois pas frapper mon ordinateur
quand il ne fonctionne pas correctement.")
print ("Je ne dois pas frapper mon ordinateur
quand il ne fonctionne pas correctement.")
print ("Je ne dois pas frapper mon ordinateur
quand il ne fonctionne pas correctement.")
print ("Je ne dois pas frapper mon ordinateur
quand il ne fonctionne pas correctement.")
print ("Je ne dois pas frapper mon ordinateur
quand il ne fonctionne pas correctement.")
Bien sûr ça a été vite car j'ai fait un copier-coller, mais si la punition n'avait pas été réduite.
Vous aurez fait les 500 lignes avec un copier-coller !!!
Donc pour pouvoir le faire encore plus rapidement, je vais vous expliquer les boucles.
ligne_faite = 1
lignes_a_faire = 10
while ligne_faite <= lignes_a_faire :
print ("ligne",
ligne_faite, ": Je ne dois pas frapper mon ordinateur quand il ne
fonctionne pas correctement.")
ligne_faite += 1
print ("J'ai terminé")
Voyons comment cela fonctionne :
On crée une variable qui augmentera (diminuera) à chaque tour, ici cette variable est ligne_faite et
est augmentée de +1 avec "ligne_faite += 1".
Après on entre dans la boucle en faisant le test "ligne_faite <= lignes_a_faire", ici 1 < 10 donc on
exécute ce qu'il y a à l'intérieur. Et on ajoute 1 à la variable "ligne_faite" pour passer une 2eme
fois.
Une fois en bas de la boucle, on retourne directement à la condition "ligne_faite <= lignes_a_faire".
Comme ligne_faite vaut maintenant 2, on teste donc si 2 <= 10, c'est le cas donc on exécute les
instructions.
ligne_faite vaut maintenant 3, donc on teste 3 <= 10. etc...
Puis on arrive à ligne_faite qui vaut 10, donc on teste 10 <= 10, comme c'est égal, on exécute les
instructions. ligne_faite prend la valeur 11 et comme 11 > 10, la condition n'est pas vraie donc on
s'arrête et sort de la boucle. Je peux donc écrire que j'ai fini.
Vous pouvez maintenant faire en sorte d'avoir les 500 lignes en faisant :
i = 1
while i <= 500 :
print ("ligne",
i, ": Je ne dois pas frapper mon ordinateur quand il ne
fonctionne pas correctement.")
i += 1
print ("J'ai terminé")
Tant que i est inférieure ou égale à 500, on affiche notre ligne de punition.
J'ai utilisé "i" comme nom de variable car c'est une habitude qu'ont les programmeurs pour les boucles
itératives (qui augmente ou diminue petit à petit). Ca permet d'allez plus vite
N'est-ce pas rapide ? Et bien, il y a encore mieux.
la boucle "for ... in range()"
Voici une méthode pour raccourcir encore plus le code.
for ligne_faite in range(1,11) :
print ("ligne",
ligne_faite, ": Je ne dois pas frapper mon ordinateur quand il ne
fonctionne pas correctement.")
print ("J'ai terminé")
Ce code fait exactement la même chose, ligne_faite prend automatiquement la valeur 1 puis 2 , etc...
jusqu'a 11 où on sort de la boucle pour dire que l'on a terminé.
range(x,y,z) :
- x est la valeur initiale que ligne_faite va prendre.
- y-1 est la limite où la condition s'arrête ici j'ai mis 11 car je veux 10 lignes (11-1 = 10).
on mais +1 à la valeur que l'on veut car c'est y exclus donc le programme va jusqu'a y-1 inclus
- z est la fréquence à laquelle ligne_faite augmente(dininue). Par défaut cette valeur est +1,
c'est pour ça que je ne l'ai pas mise
Dans ces exemples, on a vu pour <= mais il n'y a pas que ça.
Les opérateurs
Voici tous les opérateurs que l'on peut utiliser pour les boucles.
| OPERATEUR : |
on continue tant qu'il y a ... |
| == |
L'égalité
|
| != |
La différence
|
| > |
La supériorité
|
| < |
L'infériorité
|
| >= |
La supériorité ou l'égalité
|
| <= |
L'infériorité ou l'égalité
|
Voici quelques mot clés qui pourraient vous servir :
| OPERATEUR : |
description : |
| or |
OU
|
| and |
ET
|
| not |
NON
|
L'opérateur 'or' permet de faire une boucle avec plusieurs conditions. (1 seule condition vraie suffit
pour exécuter la boucle).
L'opérateur 'and' permet de faire une boucle avec plusieurs conditions. (toutes les conditions doivent
être vraies pour exécuter la boucle).
L'opérateur 'not' permet de faire une boucle tant que la condition n'est pas vraie (pas réalisée).
la boucle for ... in ... :
Si vous devez parcourir du texte, il existe "for ... in ... :". Cette boucle parcourt le texte de la
première lettre à la dernière.
lettre_presente = False
prenom = eval (input ("entrez votre prénom : "))
# on teste une par une les lettres du prénom
# pour savoir s'il contient la lettre 'a'
for i in prenom :
if i == 'a' :
lettre_presente = True
# si la lettre est présente, on l'affiche
if lettre_presente :
print ("Votre prénom
contient la lettre a")
else :
print ("Votre prénom
ne contient pas la lettre a")
Je ne sais pas comment vous vous appelez donc j'expliquerai avec le mien.
lettre_presente sert à savoir si la lettre est présente dans le prénom. On l'initialise avec la valeur
False pour dire qu'elle n'est pas présente.
Ensuite on tape notre prénom. Moi c'est romain.
On entre dans la boucle, i prend la valeur 'r'.
On teste si 'r' = 'a', ce n'est pas le cas donc on ne fait rien.
On refait un tour avec i qui vaut 'o' etc...
On arrive à i qui vaut 'a', dans ce cas la condition est bonne, on transforme donc lettre_presente en
donnant la valeur True pour dire que la lettre est présente.
Arrivée à 'n' on sort de la boucle et on affiche si la lettre est présente ou non en fonction de
lettre_presente
Dans ce cas là, les deux derniers tours de boucle servent à rien car on sait déjà qu'il y a un 'a'.
L'instruction break
On utilise donc l'instruction
break quand on a obtenu ce qu'on voulait et que l'on désire
arrêter la boucle. break est un mot anglais qui veut dire casser, mais dans ce contexte, c'est plus
arrêter. Car cette instruction sert à arrêter la boucle.
lettre_presente = False
prenom = eval (input ("entrez votre prénom : "))
# on teste une par une les lettres du prénom
# pour savoir s'il contient la lettre 'a'
for i in prenom :
if i == 'a' :
lettre_presente = True
break
# si la lettre est présente, on l'affiche
if lettre_presente :
print ("Votre prénom
contient la lettre a")
else :
print ("Votre prénom
ne contient pas la lettre a")
Dans ce cas la boucle s'arrête après le 'a' de mon prénom.
i prend pour valeur 'r' puis 'o' ... arrivée à 'a', la condition devient bonne et transforme
lettre_presente avec True puis sort de la boucle car on a eu ce qu'on voulait, c'est à dire à savoir
si la lettre 'a' est présente dans le prénom.
Si vous n'avez pas compris ce que ça fait, écrivez la ligne "print i" après "lettre_presente = True"
dans les deux exemples.
Les booléens dans une boucle
Si vous avez suivi le cours depuis le début, vous devez donc savoir que l'on peut utiliser les
booléens dans les conditions. Et bien c'est la même chose pour les boucles car elles utilisent des
conditions.
majeur, i = False, 0
# tant que majeur vaut False, on execute les instructions
while not majeur :
i += 1
if i == 18 :
majeur = True
print ("on est majeur à l'age de", i,
"ans")
Donc on crée deux variables (majeur qui vaut False et i qui vaut 0).
Tant que 'majeur' ne vaut pas True, on exécute les instructions.
On incrémente i pour qu'il augmente à chaque tour.
Si i vaut 18 , on change majeur en True. Comme la boucle fait des tours tant que l'on n'a pas majeur,
la boucle va dans ce cas s'arrêter car on a majeur qui vaut vrai.
les boucles imbriquées
Certaines de vos boucles peuvent contenir d'autres boucles, on appelle ceci des boucles imbriquées.
majeur = False
# tant que majeur vaut False, on execute les instructions
while not majeur :
i = 0
while i < 18 :
i += 1
majeur = True
print ("on est majeur à l'age de", i,
"ans")
Ce code donne le même résultat que précédemment. Mais celui-ci fait d'abord une boucle avec la condition
"not majeur", puis une autre à l'intérieur qui incrémente i jusqu'a 18. Arrivée à 18, on sort de la
boucle à l'intérieur et reprend la suite de la 1ere boucle, c'est à dire changer majeur avec la valeur
True. Ensuite on sort de cette boucle car maintenant on a majeur qui vaut "true".
Conclusion
Bon maintenant vous pourrez faire rapidement et facilement des punitions, mais n'abusez pas trop de
cette technique car
c'est pas bien de ne pas faire ses punitions !!!!!.
Surtout si c'est pour la raison de l'exemple, à moins que ça ne vous dérange pas de payer un nouvel
ordinateur. ( Si c'est le cas, je suis intéressé par l'ordinateur , vous pouvez donc me contacter

)
Plus concrètement, vous pourrez faire des programmes qui vont durer plus longtemps car tant que la
condition n'est pas réalisée, le programme fera toujours la même action et continuera à tourner.
Dans le chapitre suivant, vous allez pouvoir faire une petite pause pour l'apprentissage et surtout
vous exercer car ça sera plusieurs exercices de programmation portant sur ces 5 premiers chapitres.