def moyenne(a, b):
return (a + b) / 2
print(moyenne(12, 16))
print(moyenne(9, 18))14.0
13.5
DMI · FST · UCAD
On sait décider et répéter. Cette séance apprend à organiser le code en fonctions réutilisables, à réutiliser des modules tout prêts, à lire et écrire des fichiers, et à gérer les erreurs proprement avec try / except. Exécutez chaque cellule avec Maj + Entrée. Les cellules À vous sont à compléter.
Une fonction est un bloc de code nommé et réutilisable. On la définit une fois avec def, puis on l’appelle autant de fois qu’on veut. return renvoie une valeur que l’on peut réutiliser. Comme pour if et for, le corps est un bloc indenté après les deux points.
À vous. Écrivez une fonction double(n) qui renvoie n * 2, puis affichez double(7).
Une fonction peut prendre plusieurs paramètres. À l’appel, on fournit les arguments dans le même ordre.
Fatou habite a Dakar.
À vous. Écrivez une fonction presentation(nom, age) qui renvoie une phrase du type « Awa a 25 ans. », puis affichez le résultat pour un nom et un âge.
Un paramètre peut avoir une valeur par défaut : si l’argument n’est pas fourni à l’appel, la valeur par défaut est utilisée.
Bonjour Awa
Bonsoir Awa
À vous. Écrivez une fonction prix_ttc(prix, taux=0.18) qui renvoie prix * (1 + taux), puis appelez-la une fois avec le taux par défaut et une fois avec taux=0.10.
On documente une fonction avec une docstring : une courte phrase entre guillemets, juste sous le def. On la retrouve via .__doc__.
25
Renvoie le carre de x.
Une variable créée dans une fonction est locale : elle n’existe que le temps de l’exécution de la fonction, et n’est pas accessible à l’extérieur (c’est la portée).
Portée. La variable
resultatci-dessus n’existe pas en dehors decalcul: y accéder après l’appel provoquerait uneNameError. Pour récupérer une valeur calculée dans une fonction, il faut la renvoyer avecreturn.
Attention à la différence entre return et print : return renvoie une valeur réutilisable dans un calcul ; une fonction qui se contente d’afficher renvoie None.
x = 115
15
y = None
À vous. Écrivez une fonction triple(n) qui renvoie n * 3 (avec return, pas print), puis utilisez-la dans un calcul : affichez triple(4) + 1.
Un module est une bibliothèque de code déjà écrit, qu’on importe pour la réutiliser. Python en fournit beaucoup en standard. import math donne accès aux outils mathématiques via math..
À vous. Importez math et affichez la racine carrée de 81 avec math.sqrt.
On peut aussi importer seulement ce dont on a besoin, avec from module import nom. On l’utilise alors directement, sans le préfixe.
À vous. Importez uniquement la fonction sqrt depuis math, puis affichez sqrt(49).
Un programme peut sauvegarder des données dans un fichier pour les retrouver plus tard. On ouvre un fichier avec open(), dans un bloc with qui le referme automatiquement à la fin. Le mode "w" écrit (et écrase), "r" lit (mode par défaut).
fichier ecrit
\n marque une fin de ligne. On relit tout le contenu d’un coup avec .read().
À vous. Écrivez dans un fichier notes.txt trois notes (par exemple 12, 15, 18), une par ligne.
Le plus souvent, on parcourt un fichier ligne par ligne avec une boucle for. Chaque ligne se termine par \n, qu’on enlève avec .strip().
À vous. Ouvrez villes.txt et affichez chaque ligne débarrassée de ses espaces de fin, avec une boucle for et .strip().
Certaines opérations peuvent échouer à l’exécution (convertir un texte non numérique, diviser par zéro, ouvrir un fichier absent). Plutôt que de laisser le programme planter, on essaie le code dans un bloc try, et on rattrape l’erreur dans un bloc except.
Ce n'est pas un nombre valide.
À vous. Mettez int("12x") dans un try, et affichez un message dans un except ValueError.
On précise quelle erreur on rattrape (ici ZeroDivisionError). Cela évite de masquer des erreurs qu’on n’avait pas prévues.
Division par zero impossible.
Une fonction peut intégrer un try / except pour rester robuste : elle renvoie une valeur de repli au lieu de planter.
5.0
impossible
À vous. Écrivez un try / except ZeroDivisionError qui tente d’afficher 20 / 0 et, en cas d’échec, affiche « division impossible ».
def nom(parametres): + return ; s’appelle avec des arguments ; peut avoir des valeurs par défaut et une docstring.return.return renvoie une valeur réutilisable ; print affiche seulement (et la fonction renvoie None).import math (puis math.sqrt), ou from math import sqrt.with open("f.txt", "w") as f: pour écrire, "r" pour lire ; .read() ou une boucle for ligne par ligne ; with referme automatiquement.try: le code risqué, except TypeErreur: le rattrapage ; préciser l’erreur attendue.Prochaine séance — S5 : la programmation orientée objet (classes, objets, __init__, méthodes, héritage, polymorphisme).