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 :

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

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 :

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.

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.

Voici le code complet avec la fonction jeterLeDe().

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 :

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 :

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

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

Dernière mise à jour