Formation I.S.N.

Récupérer une valeur

L’utilisation d’arguments permet donc de communiquer des informations depuis le programme principal vers une fonction. Mais on peut aussi avoir besoin de communiquer des informations dans l’autre sens : depuis une fonction, vers le programme principal.



Imaginons que nous ayons besoin de compter le nombre de a dans une chaîne de caractères donnée. Le script à écrire pour cela est le suivant :


			n = 0
			for i in range(0, len(s)):
				if s[i] == "a":
					n = n + 1
			

Ici, l'instruction d'entrée demandant à l'utilisateur de saisir une chaîne de caractères et l'instruction de sortie affichant le nombre de a (la variable n) ne sont pas implémentées.



Si l’on veut que le programme principal puisse non seulement communiquer la chaîne de caractères s à la fonction mais aussi récupérer la valeur de n calculée par la fonction, alors nous serons menés à écrire le script suivant :


			def NombreDea(s):
				n = 0
				for i in range(0, len(s)):
					if s[i] == "a":
						n = n + 1
				return n
			

L’exécution de l’instruction return n a pour effet d’interrompre l’exécution du corps de la fonction et de renvoyer la valeur de l’expression n au programme principal.

Cette valeur produite par la fonction à partir de ses arguments s’appelle valeur de retour.



Et cette valeur de retour est exploitable dans le programme principal comme dans l’exemple ci-dessous (ce qui nous donne désormais le programme complet répondant à notre consigne) :


			def NombreDea(s):
				n = 0
				for i in range(0, len(s)):
					if s[i] == "a":
						n = n + 1
				return n

			s = input("Saisir le mot de votre choix : ")
			x = NombreDea(s)							#A NombreDea(s) est associé la valeur de la variable n
			if x <= 2:
				print("Il n'y a que ",x,"a dans votre mot : c'est peu")
			elif x > 2:
				print("Il y a ",x,"a dans votre mot : c'est beaucoup")
			

		
		

Sans la valeur de retour n située dans le corps de la fonction NombreDea, l’affectation de la variable x dans le programme principale générerait une erreur.