Les Boucles
Facile
Le concept
Les boucles sont un moyen de répéter des instructions.
Il existe 2 types de boucles:
- While
- 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.
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:
- Il n'y a pas besoin d'avoir de loop breaker.
- "i" change automatiquement de valeurs.
- "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. |