Aller au contenu
Télécharger l'application

Accueil › MPSI › Informatique

MPSI · Informatique · semaine 5

Modules, bibliothèques et fichiers de données

Importation de modules, lecture d'un fichier texte de données, calculs statistiques et représentations graphiques. Découpage en fonctions et bonnes pratiques de traitement de données.

Sommaire

Le cours

Résumé en cinq points

  1. Un module se charge par import module, import module as alias ou from module import f, g. Aucune connaissance d'un module particulier n'est exigible, sa documentation est fournie.
  2. Un fichier texte s'ouvre avec open et un mode, se lit avec read, readline ou readlines, s'écrit avec write, et se ferme toujours avec close.
  3. Les données lues sont des chaînes. On les découpe avec split puis on les convertit avec int ou float, en surveillant la fin de ligne et le séparateur décimal.
  4. Moyenne, variance et écart-type se calculent en un nombre constant de parcours, donc en coût linéaire. La médiane demande un tri.
  5. On sépare lecture, calcul et affichage dans des fonctions spécifiées, les fonctions de calcul renvoient leur résultat au lieu de l'afficher.
Pourquoi ce chapitre

Jusqu'ici, les données d'un programme étaient écrites à la main dans le code. En pratique, elles viennent d'ailleurs et elles sont stockées dans des fichiers :

  • d'un capteur ;
  • d'une expérience ;
  • d'un organisme statistique ;
  • d'un autre programme.

Ce chapitre apprend à :

  • récupérer les données ;
  • les transformer en listes de nombres ;
  • en extraire des indicateurs ;
  • les représenter ;
  • utiliser du code écrit par d'autres, rangé dans des modules et des bibliothèques.

C'est une compétence utilisée en travaux pratiques, en physique, en sciences industrielles et au TIPE. Aux concours, les sujets fournissent souvent un fichier de données et la documentation des fonctions utiles.

On attend alors une lecture propre, des conversions correctes et un code découpé en fonctions courtes et spécifiées.

Fin de l'aperçu gratuit

Encore 13 parties de cours et 9 corrigés.

Essayer 7 jours gratuitement Sans engagement · cours, exercices et fiches complets

Méthodes et exercices

Exercices classiques corrigés

Rangés par thème, du plus simple au plus exigeant. Difficulté et durée indicatives.

Importations de modules 1

Exercice 1. Les trois importations ★

Application du cours · 5 min · Niveau khôlle

Pour chaque programme, dire ce qui s'affiche ou quelle erreur se produit.

a) import math puis print(math.floor(2.7)).

b) from math import sqrt puis print(math.sqrt(4)).

c) import math as m puis print(m.pi > 3).

d) pi = 3 puis from math import pi puis print(pi).

Voir l'indice

Technique Savoir quels noms chaque forme crée.

Voir le corrigé offert
  1. a) Affiche 2.
  2. b) NameError, seul le nom sqrt a été importé, le nom math n'existe pas.
  3. c) Affiche True, m désigne le module.
  4. d) Affiche 3.141592653589793, l'importation a remplacé la valeur 3.

piège : Croire que from math import sqrt rend aussi le nom math disponible.

Lecture de fichier 2

Exercice 2. Où en est la lecture ? ★

Application du cours · 5 min · Niveau khôlle

Le fichier d.txt contient les trois lignes t;v, 0;1.5, 1;2.5, chacune terminée par une fin de ligne. On exécute le code suivant. Valeurs de a, b, c, d ?

f = open("d.txt", "r")
a = f.readline()
b = f.readlines()
c = f.read()
f.close()
d = len(b)
Voir le début du corrigé
  1. a vaut 't;v\n', la première ligne avec sa fin de ligne.

La suite du corrigé dans Sup et Spé+ : essai gratuit 7 jours.

Exercice 5. Fonction de lecture robuste ★★

Classiques de khôlle et concours · 25 min · Type écrit CCINP

Un fichier produit par un tableur a pour en-tête t;x, puis des lignes 0,5;12,25, avec une virgule décimale, et parfois une ligne vide finale.

Écrire lire(nom) qui renvoie deux listes de flottants.

On donne la méthode documentée s.replace(a, b), qui renvoie une copie de ss où chaque aa est remplacé par bb.

Voir le début du corrigé
  1. Idée : sauter l'en-tête, découper chaque ligne au point-virgule, ignorer celles qui n'ont pas deux champs, remplacer la virgule par un point, convertir.

La suite du corrigé dans Sup et Spé+ : essai gratuit 7 jours.

Conversion de chaînes 2

Exercice 3. Pièges de split et de float ★

Application du cours · 10 min · Niveau khôlle

Valeur ou erreur de : a) "12;7;\n".split(";"), b) float("7.5\n"), c) " 4 5 \n".split(), d) float(""), e) "x;y".split(",").

Voir le début du corrigé
  1. a) ['12', '7', '\n'], trois champs.

La suite du corrigé dans Sup et Spé+ : essai gratuit 7 jours.

Exercice 4. Oubli de conversion ★

Application du cours · 10 min · Niveau khôlle

Un élève lit les notes "9", "12", "15" dans une liste t sans les convertir.

Que valent t[0] + t[1] et t[0] < t[1] ?

Que renvoie sa fonction de maximum ?

Corriger.

Voir le début du corrigé
  1. t[0] + t[1] vaut '912', une concaténation.

La suite du corrigé dans Sup et Spé+ : essai gratuit 7 jours.

Statistiques descriptives 3

Exercice 6. Variance et coût ★★

Classiques de khôlle et concours · 15 min · Type écrit CCINP

Écrire variance(x) pour une liste non vide, en coût linéaire.

Calculer à la main la variance de [2,4,4,4,5,5,7,9].[2, 4, 4, 4, 5, 5, 7, 9]. Quel est le coût de la version où moyenne(x) est appelée à chaque tour ?

Corrigé détaillé dans Sup et Spé+ : essai gratuit 7 jours.

Exercice 7. Médiane ★★

Classiques de khôlle et concours · 15 min · Type écrit CCINP

On donne la fonction documentée sorted(t), qui renvoie une nouvelle liste triée par ordre croissant sans modifier tt.

Écrire mediane(t) pour tt non vide.

Valeurs pour [7,1,3,100,2][7, 1, 3, 100, 2] et [4,1,3,2][4, 1, 3, 2].

Voir le début du corrigé
  1. Idée : trier une copie, prendre l'élément d'indice n//2n//2 si nn est impair, la moyenne des éléments d'indices n//2−1n//2 - 1 et n//2n//2 sinon.

La suite du corrigé dans Sup et Spé+ : essai gratuit 7 jours.

Exercice 8. Effectifs pour un histogramme ★★

Classiques de khôlle et concours · 20 min · Type écrit CCINP

Écrire effectifs(x, a, b, k) qui renvoie la liste des effectifs des kk classes de même largeur de [a,b][a, b], toutes les valeurs de xx étant dans [a,b][a, b].

Appliquer à x=[0,2.5,5,7.5,10],x = [0, 2.5, 5, 7.5, 10], a=0,b=10,k=4.a = 0, \qquad b = 10, \qquad k = 4.

Corrigé détaillé dans Sup et Spé+ : essai gratuit 7 jours.

Écriture de fichier 1

Exercice 9. Écrire un fichier de résultats ★★

Classiques de khôlle et concours · 20 min · Type écrit Mines-Ponts

On dispose de deux listes de même longueur, noms (chaînes) et moy (flottants).

Écrire sauver(nom, noms, moy) qui crée un fichier avec l'en-tête eleve;moyenne puis une ligne par élève.

Expliquer ce qui se passe sans "\n", sans str, et avec le mode "a" appelé deux fois.

Corrigé détaillé dans Sup et Spé+ : essai gratuit 7 jours.

Espèce la plus fréquente 1

Exercice 10. Espèce la plus observée ★★

Classiques de khôlle et concours · 30 min · Type oral Centrale

Un fichier d'inventaire a pour en-tête date;espece, puis une observation par ligne, le nom d'espèce étant non vide et pouvant compter plusieurs mots, comme mésange bleue.

Écrire une fonction qui renvoie l'espèce la plus fréquente et son effectif, en coût linéaire.

On suppose au moins une observation.

Voir le début du corrigé
  1. Idée : une fonction lit la liste des espèces, une autre compte, une dernière cherche la clé d'effectif maximal.

La suite du corrigé dans Sup et Spé+ : essai gratuit 7 jours.

Fiche de cours rédigée à partir du programme officiel d'informatique commune des filières MPSI, PCSI, PTSI, MP, PC, PSI et PT (2021), premier semestre, thème « Utilisation de modules, de bibliothèques ». Les exemples d'activités sont la lecture d'un fichier de données simples, des calculs statistiques sur ces données et leur représentation graphique, par exemple sous forme d'histogrammes.