Un cap pour ce chapitre
Ce que vous saurez faire
- Choisir une fonction à partir de sa documentation
- Interpréter imports paramètres résultats et exceptions
- Vérifier les unités et les bornes d’une fonction
Importer rend un module disponible
Avec import math, le programme accède aux fonctions du module en écrivant par exemple math.sqrt(9). Le préfixe indique d’où vient la fonction et évite certaines collisions de noms. Avec from math import sqrt, on peut écrire directement sqrt(9), mais le nom est alors introduit dans l’espace courant. Les deux formes sont valides. Importer ne signifie pas recopier visiblement le code de la bibliothèque dans son fichier ; cela rend ses composants disponibles au programme. Choisissez une forme cohérente et gardez l’origine des fonctions compréhensible.
Un module peut contenir des constantes aussi bien que des fonctions. Les parenthèses indiquent un appel : une constante comme math.pi se lit directement, tandis que math.sqrt(9) exécute un traitement. Repérer cette différence évite d’essayer d’appeler une valeur numérique comme une fonction.
Lire une signature comme un contrat
La signature indique le nom, les paramètres et parfois des valeurs par défaut. La documentation explique les types attendus, le résultat et les cas qui provoquent une erreur. Pour math.sqrt(x), on cherche notamment le domaine accepté : avec les nombres réels habituels, un argument négatif n’a pas de racine réelle et déclenche une erreur. La documentation ne se réduit donc pas à un exemple heureux. Une lecture efficace commence par la tâche souhaitée, repère la fonction candidate, puis vérifie que ses hypothèses correspondent aux données réellement disponibles.
Une valeur par défaut rend un argument facultatif, sans rendre tous les arguments interchangeables. Lisez leur ordre et leur sens. Une fonction peut aussi modifier un objet au lieu de renvoyer un nouvel objet ; cette différence doit être vérifiée dans sa description.
Les bornes et les unités changent le sens
Deux fonctions qui semblent proches peuvent traiter leurs limites différemment. random.randint(a, b) peut produire a et b ; random.randrange(a, b) exclut b. Pour simuler un dé de 1 à 6, randint(1, 6) ou randrange(1, 7) conviennent. De même, les fonctions trigonométriques de math utilisent des radians : math.sin(90) ne calcule pas le sinus de 90 degrés. Il faut convertir avec math.radians si les données sont en degrés. Ces détails ne sont pas secondaires : ils déterminent le problème effectivement résolu.
Un intervalle dont les deux bornes sont égales peut être valide pour une fonction inclusive et vide pour une fonction exclusive. Ainsi un tirage inclusif entre quatre et quatre donne toujours quatre. Un tirage avec fin exclue sur les mêmes bornes ne possède aucun résultat possible.
Vérifier l’utilisation sans réécrire la bibliothèque
Un petit programme de vérification permet de confirmer que l’on a correctement compris une fonction. Testez une valeur connue, puis une frontière et éventuellement une entrée invalide. Pour l’aléatoire, dix tirages ne permettent pas d’identifier avec certitude toutes les valeurs possibles : c’est le contrat qui précise l’intervalle. Les résultats aléatoires doivent aussi être distingués des données d’un test reproductible. Enfin, la version de la documentation doit correspondre à l’environnement utilisé ; une fonction mentionnée dans une version récente peut être absente d’une installation plus ancienne.
import math
angle = math.radians(90)
hauteur = math.sin(angle)
print(hauteur)Pour rendre une expérience reproductible, on peut fixer les données d’entrée au lieu de dépendre d’un tirage. Une graine pseudo-aléatoire peut également reproduire une suite dans un environnement déterminé, mais ne transforme pas les résultats observés en une preuve des probabilités annoncées.
Composer deux fonctions documentées
Pour un triangle rectangle de côtés perpendiculaires trois et quatre, on calcule le carré de chaque longueur, leur somme vingt-cinq puis math.sqrt(25), soit cinq. L’unité reste une longueur : des mètres au carré sont additionnés avant que la racine rende des mètres. Un nombre négatif sous la racine révélerait ici une erreur dans la construction de l’expression.
Un programme minimal vérifie d’abord cet exemple connu, puis un cas comme zéro et cinq. L’objectif est de contrôler votre utilisation de la bibliothèque. La documentation dispense de reconstruire l’algorithme interne de racine carrée, mais elle ne peut pas choisir à votre place la formule géométrique adaptée.
Choisir une convention de bornes pour un indice
Un tableau de longueur cinq possède les indices zéro à quatre. Pour en choisir un au hasard, randrange(0, 5) convient ; randint(0, 5) peut produire cinq et provoquer un accès hors limites. Pour un tableau d’un élément, seul zéro est possible. Pour un tableau vide, aucun indice ne peut être choisi.
La précondition du programme doit donc exiger une longueur strictement positive avant le tirage. Une même fonction aléatoire peut servir à un dé ou à un indice, mais ses bornes doivent suivre les objets représentés. Écrivez l’ensemble des résultats autorisés avant de choisir l’appel : cela transforme un souvenir approximatif de syntaxe en vérification précise.
À vous de faire varier les choses
Quelles faces le dé peut-il produire ?
Choisissez les bornes et la fonction. L’atelier montre tous les résultats autorisés par son contrat, sans dépendre du hasard.
Lire le résultat de l’expérience initiale
Résultats possibles : 1, 2, 3, 4, 5, 6
randint inclut ses deux bornes.
| Résultat | Face classique ? |
|---|---|
| 1 | Oui |
| 2 | Oui |
| 3 | Oui |
| 4 | Oui |
| 5 | Oui |
| 6 | Oui |
Une différence d’une unité dans une borne peut modifier toutes les probabilités d’une simulation.
De la compréhension à l’autonomie
À vous de résoudre
Cherchez d’abord par vous-même. Vérifiez les résultats demandés, utilisez les indices si nécessaire, puis comparez votre méthode à la correction.
Un dé à sept faces involontaire
Un programme emploie randint(0, 6) pour simuler un dé classique. Quelle valeur indésirable peut apparaître ? Corrigez avec randint puis randrange.
Indice 1
Les deux bornes de randint sont incluses.
Indice 2
randrange exclut sa borne supérieure.
Comprendre la correction
Zéro peut apparaître, car randint(0, 6) admet sept résultats de 0 à 6. On utilise randint(1, 6), ou randrange(1, 7). Ces deux appels autorisent exactement les six faces attendues. Un petit nombre de tirages sans zéro n’aurait pas suffi à valider l’appel initial.
Une fonction introuvable
Après import math, un élève écrit sqrt(25) et obtient une erreur de nom. Donnez deux corrections cohérentes.
Indice 1
L’importation du module n’introduit pas automatiquement tous ses noms sans préfixe.
Indice 2
On peut changer l’appel ou changer la forme d’import.
Comprendre la correction
On conserve import math et on écrit math.sqrt(25), ou on écrit from math import sqrt puis sqrt(25). Dans les deux cas, le résultat est 5.0. Mélanger la forme d’import et la manière d’appeler rend l’origine du nom ambiguë pour l’élève, mais pas pour Python.
L’angle mal interprété
La documentation annonce que sin attend des radians. Comment calculer le sinus d’un angle de 30 degrés ? Expliquez la conversion.
Indice 1
Un demi-tour vaut 180 degrés et π radians.
Indice 2
Le module math fournit radians pour cette conversion.
Comprendre la correction
On calcule math.sin(math.radians(30)). Trente degrés correspondent à π/6 radians, dont le sinus vaut mathématiquement 0,5. L’ordinateur peut fournir une approximation très proche. Écrire math.sin(30) traiterait 30 radians et répondrait donc à une autre question, même si aucune erreur n’est levée.
Lire avant de tester
Une fonction documentée accepte un tableau non vide de nombres et renvoie leur moyenne. Quels trois points faut-il vérifier avant de l’appeler sur des lignes lues dans un CSV ?
Indice 1
Le format d’un fichier ne donne pas automatiquement les types Python désirés.
Indice 2
Pensez au contenu, à la taille et au traitement du résultat.
Comprendre la correction
Il faut vérifier que le tableau contient au moins une valeur, convertir les champs textuels en nombres valides, puis utiliser le résultat renvoyé conformément au contrat. Une colonne vide ou un texte non numérique ne respecte pas les hypothèses. Le choix de la bibliothèque ne dispense donc pas de préparer les données.
Choisir un indice valide
Un tableau possède huit éléments. Donnez les indices possibles et deux appels, l’un avec randint, l’autre avec randrange, pour choisir un indice. Expliquez l’adaptation pour un seul élément et le problème du tableau vide.
Indice 1
Le dernier indice vaut longueur moins un.
Indice 2
Le vide ne contient aucun indice légal.
Comprendre la correction
Les indices vont de zéro à sept. On peut utiliser randint(0, 7) ou randrange(0, 8). Pour un élément, les bornes deviennent zéro et zéro pour le tirage inclusif, zéro et un pour l’autre. Pour un tableau vide, il faut éviter le tirage ou signaler que la précondition n’est pas satisfaite.
Un déplacement mesuré
Une documentation précise que sqrt(x) renvoie la racine carrée réelle de x, avec x >= 0. Un déplacement a des composantes 6 mètres et 8 mètres perpendiculaires. Écrivez le calcul de sa longueur, donnez le résultat et justifiez l’unité.
Indice 1
Additionnez les carrés avant de prendre la racine.
Indice 2
La somme intermédiaire vaut cent mètres carrés.
Comprendre la correction
L’expression est math.sqrt(6 * 6 + 8 * 8). Les carrés donnent 36 et 64, leur somme cent, puis la racine vaut dix mètres. Prendre séparément les racines de six et huit ne correspondrait pas à la formule. L’import doit être compatible avec le préfixe utilisé : ici import math.
Une simulation qui oublie une issue
Un jeu doit choisir uniformément un entier de 2 à 5 inclus. Il utilise randrange(2, 5). Listez les résultats réellement possibles, indiquez la valeur oubliée et donnez deux corrections. Expliquez pourquoi cent tirages ne remplacent pas cette analyse.
Indice 1
La borne finale de randrange est exclue.
Indice 2
Le contrat décrit les résultats possibles, même ceux jamais observés.
Comprendre la correction
L’appel autorise deux, trois et quatre ; cinq manque. Les corrections sont randrange(2, 6) ou randint(2, 5). Observer cent tirages sans cinq ne permettrait pas, à lui seul, de distinguer un oubli d’une issue rare. La documentation permet ici de conclure exactement sur les bornes du tirage.
Les erreurs qui méritent un détour
- Déduire toutes les valeurs possibles de quelques tirages
- L’observation d’un échantillon ne remplace pas la lecture des bornes documentées.
- Ignorer les unités
- Notez l’unité des paramètres et du résultat avant de connecter deux fonctions.
La fiche à garder
L’essentiel à retenir
- La documentation décrit un service et ses limites.
- Les formes d’
importdéterminent les noms utilisables. - Bornes, types et unités doivent correspondre au problème.
Cette notion au bac
Retrouvez ces idées dans un sujet complet, avec des indices, une correction expliquée et des ateliers.
Le prochain pas
Retrouver le catalogue de Première
Ce chapitre s’appuie sur le programme officiel de Première (PDF, nouvel onglet). Les explications et exercices sont proposés pour l’apprentissage.
