Aller au contenu

Numérique et sciences informatiques (spécialité) · Première

Utilisation de bibliothèques en Python : exercices de Première NSI

Publié le 6 novembre 2026 · Mis à jour le 6 novembre 2026 · Signaler une erreur

L'essentiel

  • Une bibliothèque (ou module) est un fichier Python que tu réutilises avec import au lieu de réécrire ses fonctions.
  • Trois écritures d'import à maîtriser : import math (appel math.sqrt(x)), import math as m (appel m.sqrt(x)), from math import sqrt (appel sqrt(x)).
  • Avant d'utiliser une fonction inconnue, lis sa documentation avec help(...) et teste-la sur un cas dont tu connais le résultat.
  • Évite from module import * et ne donne jamais à une variable le nom d'une fonction importée : tu la masquerais.
  • Un fichier .py que tu écris toi-même est une bibliothèque : tu peux l'importer depuis un autre fichier du même dossier.

Comment utiliser ces exercices

Ces exercices s'adressent à toi si tu prépares la spécialité NSI en Première et que tu veux t'entraîner à utiliser des bibliothèques dans tes programmes Python. Le programme officiel de cette spécialité en classe de Première est publié par le ministère de l'Éducation nationale 1, et les ressources d'accompagnement d'Éduscol y associent notamment la mise au point des programmes et la gestion des bugs 2 : savoir s'appuyer sur du code déjà écrit et testé en fait partie.

Tu as déjà vu les constructions élémentaires (variables, boucles, fonctions), l'écriture de tests et le fait qu'il existe plusieurs langages. Ici, on passe à l'étape suivante : ne pas tout réécrire soi-même, et savoir aller chercher une fonction déjà écrite.

Pour chaque exercice, essaie d'abord seul(e) avec une feuille ou un éditeur Python. Ouvre les indices un par un, puis seulement après la correction. Taper le code et l'exécuter t'apprendra plus que de le lire.

Les exercices

Exercice 1 La diagonale d'un écran

★☆☆Environ 5 min

Un écran rectangulaire mesure 6 dm de large et 8 dm de haut. Sa diagonale est l'hypoténuse d'un triangle rectangle dont les côtés de l'angle droit sont la largeur et la hauteur.

Écris un programme qui importe le module math, calcule la longueur de la diagonale en décimètres avec la fonction math.sqrt, et l'affiche. Donne la valeur obtenue.

Indice 1

Rappelle-toi le théorème de Pythagore : le carré de l'hypoténuse est la somme des carrés des deux autres côtés.

Indice 2

En Python, le carré s'écrit x**2. N'oublie pas le préfixe math. devant sqrt.

Voir la correction pas à pas
  1. On importe le module avec import math en première ligne du programme.

  2. On range les mesures dans deux variables : largeur = 6 et hauteur = 8.

  3. On applique Pythagore : diagonale = math.sqrt(largeur**2 + hauteur**2). Le calcul sous la racine vaut 36 + 64 = 100.

  4. On affiche avec print(diagonale). Python écrit 10.0, car math.sqrt renvoie toujours un nombre à virgule (type float).

  5. On vérifie à la main : 10² = 100, le résultat est cohérent.

La diagonale mesure 10 dm. Retiens que math.sqrt renvoie un float même quand le résultat est entier : 10.0 et 10 sont deux écritures différentes en Python, même si elles représentent la même valeur.

Exercice 2 Combien de minibus ?

★☆☆Environ 5 min

Un club de 47 élèves part en sortie. Chaque minibus contient 9 places. On veut le nombre minimal de minibus à réserver.

Écris un programme qui utilise math.ceil pour calculer ce nombre. Donne le résultat.

Indice 1

Une division ordinaire donne un nombre décimal, mais on ne peut pas réserver une fraction de minibus.

Indice 2

math.ceil(x) renvoie le plus petit entier supérieur ou égal à x. Consulte help(math.ceil) si tu hésites.

Voir la correction pas à pas
  1. On importe math avec import math.

  2. On calcule la division : 47 / 9 donne environ 5,22.

  3. Cinq minibus offriraient 45 places, ce qui est insuffisant : il faut arrondir vers le haut.

  4. On écrit nombre = math.ceil(47 / 9), ce qui donne 6.

  5. On contrôle : 6 minibus offrent 54 places, donc 47 élèves tiennent, alors que 5 minibus n'en offrent que 45.

Il faut 6 minibus. L'arrondi à l'entier le plus proche (round) aurait donné 5 et laissé deux élèves sur le trottoir : choisir la bonne fonction d'arrondi (ceil vers le haut, floor vers le bas) dépend toujours du problème posé.

Exercice 3 Aire d'un disque avec un alias

★★☆Environ 8 min

On veut l'aire d'un disque de rayon 5 cm, arrondie au centième.

Écris un programme qui importe le module avec un alias : import math as m. Utilise la constante m.pi et la fonction round pour afficher l'aire arrondie à deux décimales. Donne la valeur.

Indice 1

L'aire d'un disque de rayon rr vaut πr2\pi r^2.

Indice 2

round(x, 2) arrondit x à deux chiffres après la virgule. La constante s'écrit m.pi, sans parenthèses.

Voir la correction pas à pas
  1. On écrit import math as m : désormais m désigne le module math.

  2. On définit rayon = 5.

  3. On calcule aire = m.pi * rayon**2. Mathématiquement, c'est 25π25\pi, soit environ 78,5398.

  4. On arrondit : print(round(aire, 2)) affiche 78.54.

  5. On vérifie l'ordre de grandeur : π≈3,14\pi \approx 3{,}14 et 3,14×25=78,53{,}14 \times 25 = 78{,}5, c'est cohérent.

L'aire vaut environ 78,54 cm². Remarque que pi n'est pas une fonction mais une constante du module : on écrit m.pi et non m.pi(). Si tu mets des parenthèses, Python signale que le nombre n'est pas appelable.

Exercice 4 Le plus grand carreau possible

★★☆Environ 8 min

Un mur rectangulaire mesure 84 cm sur 126 cm. On veut le recouvrir exactement de carreaux carrés identiques, sans découpe, dont le côté est un nombre entier de centimètres, le plus grand possible.

Écris un programme qui utilise from math import gcd et donne la longueur du côté d'un carreau.

Indice 1

Le côté du carreau doit diviser 84 et 126.

Indice 2

Le plus grand diviseur commun de deux entiers s'appelle le PGCD, et le module math propose une fonction gcd.

Voir la correction pas à pas
  1. On écrit from math import gcd : la fonction s'appelle ensuite directement gcd(...), sans préfixe.

  2. On définit longueur = 126 et largeur = 84.

  3. On appelle cote = gcd(longueur, largeur).

  4. À la main : 84=22×3×784 = 2^2 \times 3 \times 7 et 126=2×32×7126 = 2 \times 3^2 \times 7, donc le PGCD vaut 2×3×7=422 \times 3 \times 7 = 42.

  5. On contrôle : 126=3×42126 = 3 \times 42 et 84=2×4284 = 2 \times 42, soit 6 carreaux au total.

Le côté du carreau mesure 42 cm. L'import avec from … import est pratique ici car on n'utilise qu'une seule fonction ; avec import math, il aurait fallu écrire math.gcd(126, 84). Les deux programmes donnent le même résultat.

Exercice 5 Médiane d'une série de notes

★★☆Environ 10 min

Une série de notes est stockée dans la liste notes = [12, 15, 9, 18, 11, 15].

Écris un programme qui importe le module statistics et affiche la moyenne puis la médiane de cette série. Donne la valeur de la médiane.

Indice 1

Le module statistics contient des fonctions nommées mean et median.

Indice 2

Pour une série de taille paire, la médiane est la moyenne des deux valeurs centrales de la série rangée dans l'ordre croissant.

Voir la correction pas à pas
  1. On écrit import statistics.

  2. On crée la liste notes = [12, 15, 9, 18, 11, 15].

  3. On calcule statistics.mean(notes) : la somme vaut 80, divisée par 6, soit environ 13,33.

  4. On calcule statistics.median(notes). La série rangée est 9, 11, 12, 15, 15, 18 : les deux valeurs centrales sont 12 et 15.

  5. La médiane est donc 12+152=13,5\frac{12 + 15}{2} = 13{,}5.

  6. On vérifie qu'il y a trois valeurs de chaque côté : 9, 11, 12 d'un côté, 15, 15, 18 de l'autre.

La médiane vaut 13,5 et la moyenne environ 13,33. Tu aurais pu écrire ces fonctions toi-même avec une boucle et un tri, mais la bibliothèque t'évite des erreurs et te fait gagner du temps : c'est tout l'intérêt de la réutilisation de code.

Exercice 6 Un nom masqué

★★☆Environ 8 min

Voici un programme :

from math import sqrt

sqrt = 4
print(sqrt(16))
  1. Que se passe-t-il à l'exécution ? Écris le type d'erreur affiché.
  2. Explique la cause en une ou deux phrases.
  3. Propose une correction qui permet de calculer la racine de 16 et de garder une variable valant 4.
Indice 1

Lis la deuxième ligne : que devient le nom sqrt après l'affectation ?

Indice 2

Pour éviter ce genre de conflit, l'écriture import math garde les noms rangés derrière le préfixe math..

Voir la correction pas à pas
  1. Après from math import sqrt, le nom sqrt désigne une fonction.

  2. La ligne sqrt = 4 réaffecte ce nom : il désigne maintenant l'entier 4 et la fonction n'est plus accessible sous ce nom.

  3. À l'appel sqrt(16), Python essaie d'appeler l'entier 4 comme une fonction et lève une TypeError indiquant qu'un objet de type int n'est pas appelable.

  4. Correction : on renomme la variable, par exemple racine_prevue = 4, ou bien on utilise import math et on écrit math.sqrt(16), ce qui supprime tout risque de collision.

  5. Après correction, print(math.sqrt(16)) affiche 4.0.

Un module importé avec from … import met ses noms dans le même espace que tes variables. Une affectation maladroite les écrase sans avertissement. C'est l'une des raisons pour lesquelles on préfère import math : le préfixe protège les noms.

Exercice 7 Écrire sa propre bibliothèque

★★★Environ 15 min

Tu veux réutiliser une conversion de température dans plusieurs programmes.

  1. Crée un fichier conversions.py contenant une fonction celsius_vers_fahrenheit(c) qui renvoie c×95+32c \times \frac{9}{5} + 32.
  2. Crée un fichier essai.py, placé dans le même dossier, qui importe ce module et affiche la température de 37 °C en degrés Fahrenheit, arrondie au dixième.
  3. Ajoute dans conversions.py un test avec assert qui vérifie que 100 °C donne 212 °F.

Donne la valeur affichée pour 37 °C.

Indice 1

Un fichier Python est un module : son nom sans l'extension .py sert dans import.

Indice 2

Dans essai.py, l'appel s'écrit conversions.celsius_vers_fahrenheit(37) si tu as fait import conversions.

Voir la correction pas à pas
  1. Dans conversions.py, on écrit la fonction : def celsius_vers_fahrenheit(c): return c * 9 / 5 + 32.

  2. On ajoute en dessous le test assert celsius_vers_fahrenheit(100) == 212. Comme 100 × 9 / 5 + 32 = 212, il passe sans rien afficher.

  3. Dans essai.py, on écrit import conversions.

  4. On affiche print(round(conversions.celsius_vers_fahrenheit(37), 1)).

  5. Calcul : 37×9=33337 \times 9 = 333, puis 333/5=66,6333 / 5 = 66{,}6, puis 66,6+32=98,666{,}6 + 32 = 98{,}6. Le programme affiche 98.6.

  6. On vérifie que les deux fichiers sont bien dans le même dossier, sinon Python signale qu'il ne trouve pas le module.

37 °C correspond à 98,6 °F. Tu viens de créer et d'utiliser une bibliothèque personnelle. Remarque que le test placé dans conversions.py s'exécute aussi à chaque import : plus tard, tu apprendras à le protéger pour qu'il ne se lance que lorsque le fichier est exécuté directement.

Exercice 8 Combien de bits pour numéroter ?

★★★Environ 12 min

Une application doit attribuer un numéro différent à chacun de 1 000 objets, en écrivant ces numéros en binaire avec un nombre de bits fixe. Avec nn bits, on peut écrire 2n2^n numéros différents.

Écris un programme qui utilise math.log2 et math.ceil pour trouver le plus petit nombre de bits nn tel que 2n≥10002^n \geq 1000. Donne nn, puis vérifie ta réponse en calculant 2n2^n et 2n−12^{n-1}.

Indice 1

On cherche le plus petit entier nn tel que n≥log⁡2(1000)n \geq \log_2(1000). Quelle fonction arrondit vers le haut ?

Indice 2

Écris math.log2(1000) et regarde la valeur décimale obtenue avant d'arrondir.

Voir la correction pas à pas
  1. On écrit import math.

  2. On calcule math.log2(1000) qui donne environ 9,966 : c'est l'exposant réel pour lequel 2x=10002^x = 1000.

  3. On arrondit vers le haut : n = math.ceil(math.log2(1000)), ce qui donne 10.

  4. Vérification : 210=1024≥10002^{10} = 1024 \geq 1000, donc 10 bits suffisent.

  5. Vérification complémentaire : 29=512<10002^9 = 512 < 1000, donc 9 bits ne suffisent pas.

  6. Les deux contrôles montrent que 10 est bien le plus petit entier convenable.

Il faut 10 bits. Cet exercice combine deux fonctions du module math et une réflexion sur le sens du résultat : une fois de plus, le choix de ceil vient de l'énoncé et non d'une habitude.

Les questions qu'on se pose

Pourquoi utiliser une bibliothèque plutôt que tout écrire moi-même ?

Une fonction de bibliothèque a déjà été écrite et testée par d'autres : tu gagnes du temps et tu évites des erreurs. Tu peux te concentrer sur le problème que tu dois résoudre. Cela ne t'empêche pas de savoir réécrire une fonction simple (un maximum, une moyenne) pour t'entraîner : l'un n'exclut pas l'autre.

Quelle différence entre `import math` et `from math import sqrt` ?

Avec import math, tu accèdes aux fonctions via le préfixe : math.sqrt(16). Avec from math import sqrt, le nom sqrt est utilisable directement, mais il vit dans le même espace que tes variables et peut être écrasé. En cas de doute, choisis import math : c'est plus lisible et plus sûr.

Comment savoir ce que fait une fonction que je ne connais pas ?

Utilise help(nom_de_la_fonction) dans la console, par exemple help(math.ceil), pour lire sa documentation. Puis teste-la sur un cas dont tu connais le résultat à la main : si Python et toi êtes d'accord, tu peux l'utiliser avec confiance.

Sources

Programme visé : Programme d'enseignement de spécialité de numérique et sciences informatiques de la classe de première de la voie générale · Ministère de l'Éducation nationale

  1. Programme d'enseignement de spécialité de numérique et sciences informatiques de la classe de première de la voie générale, Ministère de l'Éducation nationale. Consulté le 6 novembre 2026.
  2. Programmes et ressources en numérique et sciences informatiques - Voie générale, Éduscol. Consulté le 6 novembre 2026.
  3. Bibliothèque, Wikipédia. Consulté le 6 novembre 2026.
  4. Bibliothèques de Montréal, Wikipédia. Consulté le 6 novembre 2026.

Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.

Signaler une erreur sur cette page

Je suis en…

Primaire

  • CP Bientôt
  • CE1 Bientôt
  • CE2 Bientôt
  • CM1 Bientôt
  • CM2 Bientôt

Collège

Lycée

Supérieur

  • BTS Bientôt
  • BUT Bientôt
  • Licence Bientôt
  • Prépas Bientôt

Sur cette page