Python en Mathématiques - Niveau 2

La portée d'une variable

Variable affectée dans une fonction

Une variable à laquelle on affecte une valeur dans le corps d'une fonction va exister lors de l'exécution de cette fonction mais disparaît dès que l'on sort de la fonction.

Exemple :

On écrit une fonction qui renvoie True si l'entier n donné en entrée est premier et False sinon.

Le principe de cette fonction consiste à tester si les entiers inférieurs ou égaux à la racine de n sont diviseurs de l'entier. La fonction détermine donc si l'entier n est premier mais détermine également un diviseur propre de l'entier dans le cas non premier.

On aimerait identifier (afficher à l'écran) également ce diviseur.

Testez la tentative suivante :


def est_premier(n):
	""" n entier naturel au moins égal à 2. """
	d = 2
	while d*d <= n  :
		if n%d == 0 : return False
		d += 1
		
	return True
	
M = 20
prem = est_premier(M)

if not(prem) :
	print("{} n'est pas premier.".format(M))
	# on aimerait maintenant afficher le diviseur trouvé :
	print("Un diviseur : ")
	print(d)

La dernière ligne print(d) provoque l'erreur suivante :

"name 'd' is not defined".

En effet, d a été défini à l'intérieur de la fonction. A l'extérieur de la fonction,d n'existe plus. Il n'est donc pas possible de récupérer la valeur trouvée pour le diviseur de cette façon.

Afficher le diviseur

Proposez une solution au problème exposé précédemment (en affichant le diviseur obtenu, en dehors de la fonction).

  • Méthode 1
  • Méthode 2

Le plus simple est certainement de séparer les tâches en deux fonctions :


		
		

Si l'on tient à n'avoir qu'une seule fonction, cette fonction peut renvoyer deux valeurs (ou plus exactement un tuple) :