Accès rapide :
La vidéo
Contenu détaillé
Travaux pratiques
Les énoncés
Les corrections
Cette vidéo vous montre comment définir des fonctions en Python. Les notions de paramètres, de variables locales et de valeurs de retour y sont détaillées.
Exercice 1 : Coder une fonction power
qui élève une valeur à une puissance donnée.
Bien entendu et même si l'opérateur **
(natif en Python) réaliser cette opération, veuillez ne pas l'utiliser et coder votre fonction
grâce à une boucle : l'objectif étant de s'entrainer à coder une fonction.
Exercice 2 : Coder une fonction qui calcule la valeur du nombre d'Euler (aussi appelée constante de Neper et valant environ
2.718281828459045
) à un rang donné en vous basant sur la définition suivante :
n
dans l'équation ci-dessus.
Exercice 3 : écrire une fonction pdcg qui calcule le plus grand diviseur commun de deux entiers passés en paramètres. Il vous est demandé d'utiliser l'algorithme d'Euclide dont voici l'organigramme (Source Wikipedia).
Comme toujours, essayez de faire ces exercices sans regarder directement la correction ci-dessous. ;-)
Exercice 1 : voici comment coder un fonction power de calcul de puissance. Afin de vérifier le bon fonctionnement du code, j'affiche les premières puissances de 2.
1 2 3 4 5 6 7 8 9 10 |
def power(value, pow_value): result = 1 while pow_value > 0: result *= value pow_value -= 1 return result for i in range(16): print(power(2, i)) |
Et voici le résultat produit par cet exemple.
1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768
Exercice 2 : voici comment coder la fonction demandée. Dans la correction proposées, c'est la fonction factorial proposée par le module math de Python qui est utilisée. Pour autant, vous auriez pu utiliser votre propre implémentation de la fonction factorielle.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import math def compute_e(rank): e = 1 for i_rank in range(1, rank + 1): e += 1 / math.factorial(i_rank) return e for i in range(0, 18): print(i, "=>", compute_e(i)) print("--- Vérification de la validité de notre calcul ---") print("e = ", math.e) |
Et voici le résultat produit par cet exemple.
0 => 1 1 => 2.0 2 => 2.5 3 => 2.6666666666666665 4 => 2.708333333333333 5 => 2.7166666666666663 6 => 2.7180555555555554 7 => 2.7182539682539684 8 => 2.71827876984127 9 => 2.7182815255731922 10 => 2.7182818011463845 11 => 2.718281826198493 12 => 2.7182818282861687 13 => 2.7182818284467594 14 => 2.71828182845823 15 => 2.718281828458995 16 => 2.718281828459043 17 => 2.7182818284590455 --- Vérification de la validité de notre calcul --- e = 2.718281828459045
Exercice 3 : voici une proposition de correction pour notre fonction pgcd
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
def pgcd(a, b): if not isinstance(a, int): raise TypeError("a must be an integer") if not isinstance(b, int): raise TypeError("b must be an integer") while b != 0: r = a % b a = b b = r return a # Un petit test de notre fonction num = 3 * 7 * 11 den = 7 * 11 * 13 * 17 divisor = pgcd(num, den) num //= divisor den //= divisor print("divisor =", divisor) print(f"[{num}/{den}]") |
Et voici le résultat produit par cet exemple.
divisor = 77 [3/221]
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :