Les Boucles

 

Facile

  1. Le concept
  2. La manipulation
    1. Boucle While
    2. Boucle For

Le concept

Les boucles sont un moyen de répéter des instructions.

Il existe 2 types de boucles:

  1. While
  2. For

La manipulation

Boucle While

Reprenons l'exemple du videur. A chaque que vous voyez une personne, vous allez répéter les instructions jusqu'à ce qu'il n'y ait plus personne n'est ce pas?
Ainsi, au lieu d'écrire plusieurs fois:
#1ère personne

if personne is GARCON and BEAU:
    print("Allez garçon, fais-moi honneur! 8D")
elif personne is GIRL:
    print("Tu peux entrer Madzelle")
else:
    print("www.pole-emploi.com")
#2ème personne

if personne is GARCON and BEAU:
    print("Allez garçon, fais-moi honneur! 8D")
elif personne is GIRL:
    print("Tu peux entrer Madzelle")
else:
    print("www.pole-emploi.com")    

.
.
.
.

#n-ième personne 

if personne is GARCON and BEAU:
    print("Allez garçon, fais-moi honneur! 8D")
elif personne is FILLE:
    print("Tu peux entrer Madzelle")
else:
    print("www.pole-emploi.com")
Pourquoi ne pas utiliser une boucle ?
personne = True
GARCON = True
BEAU = True
nbPeople = 20 #Supposons qu'il y ait 20 personnes.
    
#Tant qu'il y a des personnes, on répète les instructions.
while nbPeople > 0:

    if personne is GARCON and BEAU:
        print("Allez garçon, fais-moi honneur! 8D")
    elif personne is FILLE:
        print("Tu peux entrer Madzelle")
    else:
        print("www.pole-emploi.com")
        
    #On réduit le nombre de personnes (décrémentation).
    nbPeople -= 1 #-> Loop breaker.
>>>
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Vous venez de voir une boucle while.
Cette dernière va continuer de répéter les instructions à l'intérieure d'elle tant que "nbPeople > 0" est True.
Remarque:
- Si vous oubliez de décrémenter (d'ajouter un loop breaker), vous allez entrer dans une boucle infinie !
- En effet, nbPeople ne sera jamais égal à 0 et donc "nbPeople > 0" SERA TOUJOURS True.
personne = True
GARCON = True
BEAU = True
nbPeople = 20 #Supposons qu'il y ait 20 personnes.
    
#Tant qu'il y a des personnes, on répète les instructions.
while nbPeople > 0:

    if personne is GARCON and BEAU:
        print("Allez garçon, fais-moi honneur! 8D")
    elif personne is FILLE:
        print("Tu peux entrer Madzelle")
    else:
        print("www.pole-emploi.com")
        
    #On enlève le loop breaker.
    #nbPeople -= 1
>>>
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
.
.
. 
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D

---------------------------------------------------------------------------

KeyboardInterrupt                         Traceback (most recent call last)

<ipython-input-11-73ecb085b2dd> in <module>()
        8 
        9     if personne is GARCON and BEAU:
---> 10         print("Allez garçon, fait moi honneur! 8D")
        11     elif personne is FILLE:
        12         print("Tu peux entrer Madzelle")

Boucle For

Pour le même exemple, nous pouvons utiliser la boucle for.
personne = True
GARCON = True
BEAU = True
nbPeople = 20 #Supposons qu'il y ait 20 personnes.
    
for i in range(0, nbPeople):
    if personne is GARCON and BEAU:
        print("Allez garçon, fais-moi honneur! 8D")
    elif personne is FILLE:
        print("Tu peux entrer Madzelle")
    else:
        print("www.pole-emploi.com")
>>>
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Allez garçon, fais-moi honneur! 8D
Pour une boucle for:
  1. Il n'y a pas besoin d'avoir de loop breaker.
  2. "i" change automatiquement de valeurs.
  3. "i in range(0, n)" <=> i prend les valeurs de 0 INCLUS à n EXCLU.
for i in range(0, 5):
    print(i)
>>>
0
1
2
3
4
Il faut savoir également que range() possède un 3ème paramètre qui est le pas.
for i in range(0, 5, 1): #Prend les valeurs de 0 à 4 avec un pas de 1
    print(i)
>>>
0
1
2
3
4
Nous ne sommes pas obligé de le préciser mais à la base, le pas est égal à 1. On peut bien sûr le modifier.
for i in range(0, 5, 2): #Prend les valeurs de 0 à 4 avec un pas de 2
    print(i)
>>>
0
2
4


for i in range(5, 0, -1): #Prend les valeurs de 0 à 4 avec un pas de 2
    print(i)
>>>
5
4
3
2
1
Remarque:
Par convention, on commence à 0. Si on veut que notre instruction se répète 20 fois, soit :
      - range(0, 20) (de 0 à 19 -> il y a 20 chiffres)
      - range(1, 21) (de 1 à 20 -> il y a 20 chiffres)

Pour résumer:

- Les boucles sont un moyen de répéter des instructions.
- Il existe 2 types de boucles:
      1- while
            - Tant que la condition est vérifiée, on continue.
            - Nécessite un loop breaker.
      2- for
            - i change automatiquement de valeurs.
            - "i in range(0, n)" <=> i prend les valeurs de 0 (INCLUS) à n (EXCLU).
            - Ne nécessite pas de loop breaker.
            - range() possède un 3ème paramètre qui est le pas.