# Les boucles

Notre programme est bien avancé, il gère désormais les règles de base et le score. Cependant, le programme ne permet de gérer le fait qu'un joueur retire le dé plusieurs fois.

Lorsque l'on veut répéter des instructions identique, on emploie des boucles.

Testez le code suivant dans REPL :

```python
import random

print("Boucle For")
for i in range(10):
  print(i)

print("")

print("Boucle while")
i = 0
while i < 100:
  print(i)
  i = i + random.randint(1,10)
```

On obtient ce résultat :

![](/files/-M6jZx5fw-Xu0uPiRte2)

C'est quand même plus pratique que d'écrire X fois la même ligne. On distingue généralement de types de boucles :&#x20;

* les boucle for qui s'arrêtent lorsqu'un nombre prédéterminé de répétition est atteint. Elles sont utilisées lorsque l'on sait à l'avance combien de fois on doit répéter une boucle,
* les boucles while, qui s'arrêtent lorsqu'une condition est satisfaite. On les utilise lorsque l'on ne sait pas à l'avance combien de répétitions vont être réalisées.

Pourquoi parler de boucle pour notre jeu ? Une idée ... ?

On aimerait intégrer la règle : "tant que le joueur souhaite retirer le dé, le dé est lancé". Cela signifie que tant que la valeur du dé est différente de 1, le joueur peut relancer le dé.

Voici le code complet :

```python
import random

def jeterLeDe():
  resultat = random.randint(1,6)
  print("Résultat du lancé : ")
  print(resultat)
  return resultat

def afficherLeScore(valeur1, valeur2):
  print("_________________________________")
  print("SCORES")
  print("Joueur 1 : {}       Joueur 2 : {}".format(valeur1, valeur2))
  print("_________________________________")

print("Bonjour, bienvenue dans le jeu du cochon !")

scoreJoueur1 = 0
scoreJoueur2 = 0
tourJoueur1 = True
rejouer = "o"

resultat = jeterLeDe()

while(rejouer == "o" and resultat != 1):
  if (resultat == 1):
    print("Le dé est tombé sur 1, vous passez votre tour")
    tourJoueur1 = False
  else : 
    print("Le dé n'est pas tombé sur 1")
    rejouer = input("Voulez vous rejouer ? (si oui, taper 'o')  : ")
    if(rejouer == "o"):
      resultat = jeterLeDe()
    else :
      scoreJoueur1 = scoreJoueur1 + resultat
      afficherLeScore(scoreJoueur1, scoreJoueur2)
```

Voici les résultats d'un test

![](/files/-M6jlsP6egYPqXeyeghy)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mathieu-bonte.gitbook.io/cours-i2d/algorithmie-en-python/untitled/creation-dun-jeu/les-boucles-1.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
