Leçon 7

Exercices sur les fonctions

Dans le répertoire Python créez un dossier cours7. Il contiendra tous les fichiers de cette leçon.

Définition d'une fonction

Déclaration d'une fonction

Une fonction est un regroupement d'instructions qui réalise ce que l'on sera mené à répéter.
Ecrivez le prpgramme cours.py dont le code est ci-dessous :


Ce programme permet de créer une fonction nommée direBonjour(). Elle n'est constituée que d'une seule instruction qui affiche le message "Bonjour". L'opération de création d'une fonction s'appelle la déclaration.
La déclaration d'une fonction s'effectue à l'aide du mot-clé Python def suivi du nom de la fonction et d'une paire de parenthèses.
Les instructions qui composent la fonction constituent le corps de la fonction. Ces instructions sont indentées puisqu'à la suite de la déclaration de la fonction il y a deux points.
En ligne 6 on fait appel à la fonction direBonjour() déclarée plus haut.
En ligne 8 on fait à nouveau appel à la fonction direBonjour().
L'appel d'une fonction s'effectue en écrivant le nom de la fonction suivi d'une paire de parenthèses.

L'instruction return

En général avec les fonction on utilise l'instruction return qui permet de récupérer dans le programme principal le resultat renvoyé par la fonction.
Ecrivez le prpgramme return.py dont le code est ci-dessous :


En ligne 3 la fonction direBonjour() renvoie la chaîne de caractères "Bonjour".
En ligne 5 le programme principal récupère la chaîne de caractère "Bonjour" dans la variable resultat

Variables locales

Ecrivez le programme variables.py dont le code est ci-dessous :

   

Nous avons le nom de la variable prenom qui est utilisé deux fois, en ligne 3 dans la fonction et en ligne 8 dans le preogramme principal.
La variable prenom dans la fonction est une variable locale, elle n'est connue que de la fonction, à l'extérieur de la fonction elle est inconnue et donc on peut nommer une variable par le même nom, il n'y aura pas d'interférence. En ligne 10 le programme affiche la valeur de la variable prenom du programme principal alors qu'en ligne 9 le pregramme affiche la valeur de la variable resultat qui contient la valeur de la variable prenom de la fonction.

Paramètres d'une fonction

Nous souhaitons maintenant utiliser la fonction direBonjour() pour des personnes dont on connaît le prenom. Nous souhaiterion alors l'affichage par exemple : Bonjour Paul. Pour cela nous allons ecrire entre les parenthèses de la la fonction le parrametre prenom.
Ecrivez le programme parametre.py dont le code est ci-dessous :


Nous remarquons que la variable prenom de la fonction a été affectée par la valeur de la variable reponse du programme principal.
Autrement dit le programme a fait : prenom=reponse.

On peut faire passer plusieurs paramètres. Modifiez le programme précédent en écrivant le script ci_dessous.


Variables globales

Si nous souhaitons que des variables, initialisées à l'exrérieur de la fonction, soient connues dans la fonction, nous devons les déclarer en variable globale.
Testez le code ci-dessous.


Le résultat obtenu est (1, 11, 5).
x est une variable gobale initialisée à 0 à l'exrérieur de la fonction mais reconnue dans la fonction et prend donc la valeur 1.
La variable y, passée en paramètre et intialisée à 10, prend la valeur 11.
Et enfin la variable z déclarée dans la fonction est initialisée à 5.

Les fonctions lambda

Nous pourrons utiliser les fonctions lambda pour des fonctions très simples.
Testez le code ci-dessous.

La fonction affine est replacée par la fonction f qui est une fonction lambda.
Sa syntaxe est nom de la fonction = lambda arguments : resultat retourné
La fonction somme envisage la possibilité d'utiliser plusieurs arguments.
La fonction division renvoie le couple (q,r), quotient et reste de la division de x par y.

Exercices

Exercice 1

Complétez le programme carre.py ci-dessous pour que la fonction carre() renvoie le carré d'un nombre passé en paramètre.


Aide : Algorithme

Exercice 2

Complétez le programme minimum.py ci-dessous pour que la fonction minimum() renvoie le plus petit des deux nombres passés en paramètre.


Aide : Algorithme

Exercice 3

Complétez le programme calculatrice.py ci-dessous pour que la fonction calculer() gère les 4 opérations mathématiques de base :
addition ("+"), soustraction ("-"), multiplication ("x") et division ("/").


Aide : Algorithme

Exercice 4

Ecrire un programme multiplication.py qui utilise la fonction table(n). Cette fonction affiche la table de multiplication d'un entier n saisi par l'utilisateur.Le résultat obtenu est :


Aide : Algorithme

Exercice 5

Ecrire un programme caracteres.py qui utilise la fonction change_cararctere(p,c1,c2). Cette fonction permute les caracteres c1 et c2 dans la phrase p.
p, c1, et c2 seront saisis par l'utilisateur. Le résultat obtenu est :


Aide : Algorithme

Exercice 6

Ecrire un fonction lambda qui renvoie le carré d'un entier.
Ecrire une fonction lambda qui, à partir de trois valeurs x, y, z renvoie la liste [x,y,z].

La récursivité

Définition

Une fonction récursive est une fonction qui s'appelle elle-même.
Par exemple, la fonction ci-dessous calcule la factorielle de n, notée n !n\, à savoir :

Complétez le programme factorielle.py ci-dessous pour faire afficher n! pour une valeur n saisie par l'utilisateur.


Aide : Algorithme

Exercice 7

Écrire le programme puissance.py qui utilise la fonction récursive puissance(b,n). Cette fonction élève b à la puissance n, où b est un nombre non nul et n un entier positif ou nul. On rappelle que b à la puissance 0 est égal à 1.

Aide : Algorithme

Exercice 8

Écrire le programme pgcd.py qui utilise la fonction récursive pgcd(a,b).
Cette fonction renvoie le pgcd des entiers positifs a et b. On rappelle que

Aide : Algorithme

Exercice 9

La suite de Fibonacci est une suite de nombres générée de la façon suivante :

Autrement dit on part des deux premières valeurs 1 et 1 et pour onbtenir la suivante on fait 1+1=2, puis on fait encore la somme de deux valeurs précédentes soit 1+2=3 ...etc.
On obtient ainsi la suite 1; 1; 2; 3; 5; 8; 13; 21; 34 ......On lit $u_0=1,\; u_1=1,\; u_2=2,\;u_3=3,\; u_4=5,\;u_5=8,\; u_6 = 13,\;u_7=21 .......$ etc.
Écrire le programme fibonacci.py qui utilise la fonction récursive fibonacci(n). Cette fonction calcule $u_n$, le terme de rang $n$ de cette suite.

Aide : Algorithme

Création de sa propre bibliothèque

Recopiez le script ci-dessous que vous nommerez operations.py


Puis dans le même répertoire que celui du script operations.py enregistrez le script calculs.py ci-desous.


Si l'on souhaite utiliser toutes les fonctions définies dans le script operatopns.py on remplacera ligne 1 par :