Diagramme des notes (DS2)

Calculs de statistiques et affichage de deux graphiques pour le 2ème DS, algorithmique sur des tableaux 1D et 2D, et simulations probabilistes.

Quelques statistiques...

  • Pour ce contrôle, la moyenne est de 14.71/27.
  • Soit 11/20 (si on ne traffique pas les notes).
  • La meilleure note est 23.75/27 soit 18/20.
  • La moins bonne note est 08.5/27 soit 06.5/20.
  • Pour ce contrôle, il y a 31 notes (car ... 31 élèves !).

Deux graphiques

Camembert :

_images/Camembert_notes_DS2.png

Histogramme :

_images/Histogramme_notes_DS2.png

Conseils

  • Améliorez la présentation de vos copies,
  • Essayez d’être encore plus attentifs à la syntaxe de Python (il y a eu trop d’erreurs d’indentation et de : manquants),
  • Vous devez être plus attentifs aux consignes de l’énoncé (certains élèves oublient de donner la complexité dans les dernières questions),
  • Comme dans chaque concours/DS, vous devez essayer de “grapiller” des points là où vous pouvez (la Q09 (X_PSI_PT__2015.coloriageAleatoire()) et Q13 (X_PSI_PT__2015.existeCheminSimple()) étaient faciles, par exemple),
  • Enfin, vous devez vous forcer à n’utiliser que les structures de données de l’énoncé (c’est flagrant, certains commencent par utiliser X_PSI_PT__2015.creerTableau() ou X_PSI_PT__2015.creerListeVide() au début, puis finissent avec des [] et list.append() à tout va), probablement par manque de concentration et à cause de la fatigue.

Documentation

Demonstration de l’utilisation de matplotlib pour afficher un histogramme des notes du DS2. Bien plus joli et facile qu’avec Excel !

Vous pouvez lire la documentation ci-dessous ou le code pour réviser les bases de l’utiliser de matplotlib.

La correction complète du sujet d’écrit d’informatique (Polytechnique et ENS, 2015, pour PSI et PT) est disponible ici. Ce sujet d’écrit a été posé en devoir écrit surveillé (DS) pour le cours d’informatique pour tous, en prépa MP au Lycée Lakanal.

Afficher_un_histogramme_de_notes_DS2.max_notes_brutes = 27

Les notes étaient sur 27.

Afficher_un_histogramme_de_notes_DS2.notes_brutes = [14, 21, 8.5, 13.5, 20.5, 11.25, 10.5, 14.5, 20, 23.75, 22, 23, 12.25, 14.75, 14.5, 13.75, 14, 16, 15.5, 10, 15, 16.25, 15.75, 15.75, 11, 14.5, 8.5, 12, 9.25, 13.25, 11.5]

Liste des notes. Non ordonnées.

Afficher_un_histogramme_de_notes_DS2.sur_vingt(note)[source]

Pour convertir une note sur max_notes_brutes (ici = 27) en une note sur 20 :

\[x \mapsto x \times \frac{20}{27}\]

Exemple :

>>> note = 17  # Sur 27 !
>>> sur_vingt(note)  
12.59...
Afficher_un_histogramme_de_notes_DS2.sur_cent(note)[source]

Pour convertir une note sur max_notes_brutes (ici = 27) en une note sur 100 (pourcentage) :

\[x \mapsto x \times \frac{100}{27}\]

Exemple :

>>> note = 17  # Sur 27 !
>>> sur_cent(note)  
62.96...
Afficher_un_histogramme_de_notes_DS2.nb = 10

Nombre-1 de parts dans le diagramme en camembert. 10 est pas mal.

Afficher_un_histogramme_de_notes_DS2.dict_compte = {80: 3, 50: 13, 70: 3, 40: 6, 60: 1, 30: 5}

On créé ce dictionnaire pour compter combien d’élève sont dans chaque intervalle [0%, 10%[, [10%, 20%[ etc. Cf. https://www.python.org/dev/peps/pep-0274/ pour des rappels sur les dictionnaires.

Afficher_un_histogramme_de_notes_DS2.notes = [50.0, 70.0, 30.0, 50.0, 70.0, 40.0, 30.0, 50.0, 70.0, 80.0, 80.0, 80.0, 40.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 30.0, 50.0, 60.0, 50.0, 50.0, 40.0, 50.0, 30.0, 40.0, 30.0, 40.0, 40.0]

On transforme ces notes en entiers \(0, 1, \dots, 10\). On utilise une liste en compréhension, cf. https://www.python.org/dev/peps/pep-0202/ Ou https://en.wikipedia.org/wiki/List_comprehension#Python pour plus de détails.

Afficher_un_histogramme_de_notes_DS2.labels = ['5 notes dans [30%, 40%]', '6 notes dans [40%, 50%]', '13 notes dans [50%, 60%]', '1 notes dans [60%, 70%]', '3 notes dans [70%, 80%]', '3 notes dans [80%, 90%]']

On créé les étiquettes du diagramme camembert, encore par une liste en compréhension, et on utilise du formatage de chaînes de caractères (string formatting, see https://docs.python.org/2/library/stdtypes.html#str.format).

Afficher_un_histogramme_de_notes_DS2.x = [5, 6, 13, 1, 3, 3]

On créé les données numériques qui seront affichées.

Afficher_un_histogramme_de_notes_DS2.cc = <matplotlib.colors.ColorConverter object>

On créé les différents tons de gris qui seront utilisés pour le diagramme camembert. Cette étape est plus technique que le reste du script, et est hors programme

Afficher_un_histogramme_de_notes_DS2.colors = [(0.7, 0.7, 0.7), (0.6, 0.6, 0.6), (0.5, 0.5, 0.5), (0.4, 0.4, 0.4), (0.30000000000000004, 0.30000000000000004, 0.30000000000000004), (0.19999999999999996, 0.19999999999999996, 0.19999999999999996)]

More details on http://matplotlib.org/api/colors_api.html#matplotlib.colors.ColorConverter.to_rgb

Afficher_un_histogramme_de_notes_DS2.camembert()[source]

Affiche un diagramme camembert des notes.

Afficher_un_histogramme_de_notes_DS2.histogramme()[source]

Affiche l’histogramme des notes.


Sortie du script

$ python Afficher_un_histogramme_de_notes_DS2.py
Pour ce controle, il y a 31 notes.
Pour ce controle, la moyenne est de 14.71 sur 27
Soit 11.03 sur 20 si on ne change rien.
0 eleve(s) ont eur leur note entre 0 % et 1 %.
0 eleve(s) ont eur leur note entre 10 % et 11 %.
0 eleve(s) ont eur leur note entre 20 % et 21 %.
5 eleve(s) ont eur leur note entre 30 % et 31 %.
6 eleve(s) ont eur leur note entre 40 % et 41 %.
13 eleve(s) ont eur leur note entre 50 % et 51 %.
1 eleve(s) ont eur leur note entre 60 % et 61 %.
3 eleve(s) ont eur leur note entre 70 % et 71 %.
3 eleve(s) ont eur leur note entre 80 % et 81 %.
0 eleve(s) ont eur leur note entre 90 % et 91 %.
0 eleve(s) ont eur leur note entre 100 % et 101 %.

Le fichier Python se trouve ici : Afficher_un_histogramme_de_notes_DS2.py.