# Les fonctions

Arrêtons nous quelques instant sur notre code. On remarque le l'on répète plusieurs fois le même bloc de ligne :

![](/files/-M6jkdI3UReQGXKI9O2k)

Un code qui présente des répétition n'est pas idéal. Par exemple, si vous voulez modifier la phrase "Résultat du lancé : " , vous allez devoir faire la modification deux fois.

Pour éviter cela, on utilise des fonctions. En python, une fonction s'écrit grâce au mot clé `def`.

Nous allons créer une fonction qui simule le lancé du dé :

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

Lorsque l'on appellera cette fonction, l'ordinateur va simuler un lancé de dé, afficher le résultat puis **retourner** ce résultat. L'intérêt de retourner un résultat est de pouvoir reprendre ce résultat dans une variable. Voici un test :

![](/files/-M6j89AEVr6_xVe_8FUa)

La valeur retournée par la fonction `jeterLeDe()` est assignée à la variable `resultatJet`. Lorsque l'on affiche la valeur de `resultatJet` (ligne 12), on constate qu'il s'agit bien de la même valeur qui était calculée dans la fonction.

{% hint style="info" %}
Une fonction n'est pas appelée lors de sa définition (def ...). Elle n'est appelée que lorsque l'on écrit une instruction en dehors de la définition. Par exemple elle est appelé ici à la ligne 11.
{% endhint %}

Voici le code complet avec la fonction jeterLeDe().

```python
import random

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

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

scoreJoueur1 = 0
scoreJoueur2 = 0
tourJoueur1 = True

resultat = random.randint(1,6)
print("Résultat du lancé : {}".format(resultat))

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 = random.randint(1,6)
    print("Résultat du lancé : {}".format(resultat))
  else :
    scoreJoueur1 = scoreJoueur1 + resultat
    print("_________________________________")
    print("SCORES")
    print("Joueur 1 : {}       Joueur 2 : {}".format(scoreJoueur1, scoreJoueur2))
    print("_________________________________")
```

## Fonctions vides

Dans certains cas, il n'est pas utile de retourner une valeur. On appelle ça une fonction vide. Il s'agit d'une fonction classique comme vu plus haut mais sans `return`.

Par exemple :&#x20;

```python
def afficherMessageBienvenue():
  print("Bonjour, bienvenue dans le jeu du cochon !")  
```

## Paramètres de fonctions

Les fonctions peuvent recevoir des paramètres. On les place entre les parenthèses, juste après le nom de la fonction.

Par exemple, essayez de lancer le code suivant :

```python
def afficherResultatSomme(a, b):
  somme = a + b
  print(somme) 

afficherResultatSomme(2,3)
afficherResultatSomme(-2,3.5)
afficherResultatSomme(65,386)
```


---

# 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-fonctions.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.
