Connection Menu Contenu

1788
membres
00h58
06
février
2012

Pseudo

Mot de passe

Accueil FORUM
repère : ROMMY Prod > Le tutoriel PYTHON 3.0 > Les boucles

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) :

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 :D )

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.

chapitre precedent sommaire chapitre suivant
repère : ROMMY Prod > Le tutoriel PYTHON 3.0 > Les boucles
Qui suis-je ? Contact Charte du site
Plan du site Accessibilité du site

Copyright © ROMMY Production
Le cours, les jeux et les logiciels sont la propriété de son auteur.
Toute reproduction totale ou partielle du cours est interdite sans l'accord de l'auteur.
La modification des jeux et logiciels est interdite sans l'accord de l'auteur.