Informatique TD/TP S2.7 (4) Ecoles d'ingénieurs
Lycée Jules Ferry Cannes Page 1 sur 6 TSI1
L’objectif de ce TP est d'écrire des requêtes concernant les écoles et de réaliser des statistiques
dans python (moyenne, écart-type).
1 Harmonisation des notes
Statistiques annuelles de la classe :
néral
maths
phys
S2I
Anglais
Français
IPT
Moyenne
10,35
10,40
10,08
Ecart
-
type
Statistiques du concours CCP (Concours Commun Polytechnique) de 2015 :
néral
maths
phys
S2I
Anglais
Français
IPT
Moyenne
10,59
10,68
10,08
8,5
Ecart
-
type
Statistiques du concours CCS (Concours Centrale Sulec) de 2015 :
néral
maths
phys
S2I
Anglais
Français
IPT
Moyenne
9,425
Ecart
-
type
3,4
4,1
Harmonisation des notes
Afin d'harmoniser vos notes par rapport à celle du concours, il peut être inressant degler la moyenne et
l'écart-type des notes du concours avec celles de la classe.
Afin d'harmoniser une note avec un concours, il fautaliser le calcul suivant :
=
+
est la note initiale d'un candidat dans une matière,
est la note harmonisée d'un candidat dans une matière,
est la moyenne initiale de la classe dans une matre,
est la moyenne harmonisée d'un concours pour une matière,
est l'écart-type initiale de la classe (racine carré de la variance)
est l'écart-type harmonisé d'un concours (racine carré de la variance)
Rappels
- la moyenne de classe s'obtient par l'expression :
=

représente la note du k
e
étudiant de la classe.
- l'écart type de la classe s'obtient par :
=
∑ 

=
∑ 


Les principales capacités
velopes
sont
:
utiliser une application offrant une interface graphique pour créer une base de données et l’alimenter,
utiliser une application offrant une interface graphique pour lancer des requêtes sur une base de
dones,
distinguer les rôles respectifs des machines client, serveur, et éventuellement serveur de données,
traduire dans le langage de l’algèbre relationnelle des requêtes écrites en langage courant,
concevoir une base constite de plusieurs tables, et utiliser les jointures symétriques pour effectuer
des reqtes croisées.
Informatique TD/TP S2.7 (4) Ecoles d'ingénieurs
Lycée Jules Ferry Cannes Page 2 sur 6 TSI1
Notations et coefficients
- les notes seront écrites sous forme de listes dans l'ordre suivant :
[maths, physiques, S2I, Anglais, Français, IPT]
- les coefficients au concours sont variables mais respectent sensiblement la répartition suivantes
(dans l'ordre identiques aux notes) :
[ 2 , 2 , 2 ,1 , 1 , 0.5 ]
- la moyenne d'un étudiant médian de la classe (14
e
place) a comme moyennes initiales :
notes14 = [7, 10.5, 9.5, 11.5, 9, 10.5]
1) Ecrire les instructions qui permettent d'affecter les listes des moyennes et des écarts-types suivant
(en respectant les notations indiqes) :
o moyennes0
o sigmas0
o moyennesCCP
o sigmasCCP
2) Ecrire une fonction harmoniser qui prend en arguments:
o la note d'un étudiant note0,
o la moyenne de classe pour la matière moyenne0 et son écart-type sigma0
o la moyenne du concours pour la matière CC et son écart-type sigmaCC
qui renvoie en sortie la note noteCC de l'étudiant harmonisée sur celle du concours
(pour éviter de conserver trop de décimales, on pourra multiplier la note pas 10, la convertir en
entier puis la rediviser par 10)..
3) Ecrire la boucle qui permet de nérer la liste des notes harmonisées notesCC pour un concours
don (on pourra d'ailleursfinir une liste notesCCP et une liste notesCCS).
4) Ecrire une fonction moyenne qui admet en argument la liste des notes harmonisées notesCC et la
liste des coefficients. Cette fonction renvoie en sortie la moyenne correspondante Mcc coefficiene
5) Vérifier votre fonction moyenne en calculant les moyennes pondérées des concours CCP et CCS.
6) Calculer votre moyenne personnelle (si vous ne connaissez pas vos moyennes annuelles, utiliser
des notes d'un étudiant médian).
2 Simulation d'admissibilité
On rappelle dans la suite les relations définies dans la base de données
ecoles_ingenieurs.sqlite.
CONCOURS
- id_concours (contenant l'intitulé du concours correpondant : CCP, CCS ou Epita)
- nom du concours
Informatique TD/TP S2.7 (4) Ecoles d'ingénieurs
Lycée Jules Ferry Cannes Page 3 sur 6 TSI1
ECOLE
- id_ecole
- nom
- acronyme
- lieu
- concours_id
STAT
- id_stat
- places TSI
- promotion
- integreFerry
- seuil_oral (ATTENTION : certaines écoles de concours communs ne sont pas
discréminées entre elles : les ENSI, les POLYTECH, les écoles de la banque PONT et le
seuil de certaines peut être nettement plus élevé)
- annee
- ECOLE_id
Requête SQL à partir de python
7) Ecrire l'instruction à placer en début de programme qui permet d'importer les fonctions de la
bibliotque sqlite3.
from sqlite3 import *
8) Ecrire les instructions permettant de créer une connexion conn et un curseur c (voir l'annexe) à
partir de la base de donnée ecoles_ingenieurs.sqlite.
conn = connect('ecoles_ingenieurs.sqlite')
c = conn.cursor()
Informatique TD/TP S2.7 (4) Ecoles d'ingénieurs
Lycée Jules Ferry Cannes Page 4 sur 6 TSI1
9) Ecrire une instruction pour afficher les acronymes et le nom des écoles dont l'admission passe par le
concours CCP (on stocker le résultat dans une variable r). Comment s'appelle ce type de requête ?
r=c.execute("SELECT acronyme, nom FROM ECOLE WHERE concours_id='CCP'")
requête : sélection (WHERE) + projection (SELECT)
10) Ecrire une instruction pour afficher les acronymes des écoles, le nom des écoles et les barres
d'admissibilis (seuil_oral) en 2015 dont l'admission passe par le concours CCP (on pourra trier les
écoles par seuil_oral du plus grand au plus petit : DESC).
Comment s'appelle une telle reqte SQL ?
r=c.execute("SELECT acronyme, nom, seuil_oral FROM ECOLE JOIN STAT
ON id_ecole==ECOLE_id
WHERE concours_id='CCP'and annee=2015 ORDER BY seuil_oral DESC")
requête : jointure symétrique + sélection (WHERE) + projection (SELECT)
11) Ecrire une instruction pour afficher les acronymes des écoles, le nom des écoles et les barres
d'admissibilis (seuil_oral) dont l'admission passe par le concours CCP dont les notes sont
supérieures à votre moyenne rale harmonisée en triant les écoles par le seuil_oral.
r=c.execute("SELECT acronyme, nom, seuil_oral FROM ECOLE JOIN STAT
ON id_ecole==ECOLE_id WHERE concours_id='CCP'and annee=2015 and
seuil_oral>9.6 ORDER BY seuil_oral DESC")
Traitement des résultats (tuples) renvoyés par la base de données
On remarque que l'affichage dans python n'est pas toujours très lisible.
L'intérêt de python réside plus dans les possibilités de traitement statistique dessultats.
12) Ecrire un programme barre_ecole qui admet en entrée un curseur de base de données et qui
renvoie en sortie une liste dont les éléments contiennent le nombre d'écoles auxquels é admissible
en 2015 selon les moyennes variant de 0 à 20.
On utilisera des requêtes par agrégation (COUNT) du seuil_oral en faisant varier le seuil_oral de 0 à
20 par incrément de 1.
nb_ecole = [ ]
notes = [ ]
for i in range (21):
notes = notes + [i]
r = c.execute("SELECT count(seuil_oral) FROM ECOLE JOIN STAT ON
id_ecole==ECOLE_id WHERE concours_id='CCP'and annee=2015 and
seuil_oral and seuil_oral>"+ str(i))
liste = r.fetchall()
nb_ecole = nb_ecole + [int(liste[0][0])]
13) Tracer un graphique bâton, ayant en abscisse la note moyenne au concours et présentant en
ordones le nombre d'écoles accessibles.
bar(notes, nb_ecole)
Informatique TD/TP S2.7 (4) Ecoles d'ingénieurs
Lycée Jules Ferry Cannes Page 5 sur 6 TSI1
Annexe 1 : Extrait de fonctions de la bibliothèque sqlite3
La bibliothèque sqlite3 intégrée à Spyder permet de lancer des requêtes sur une base de données Sqlite.
Se connecter (ouvrir) une base de dones sqlite
connect(...)
connect(database[, timeout, isolation_level, detect_types, factory])
Opens a connection to the SQLite database file *database*.
Use ":memory:" to open a database connection to a database that resides in RAM instead of on disk.
Exemple : nom_python_de_la_connexion = connect ( 'nom_de_la_base.sqlite' )
Créer un curseur pour parcourir une base de données
cursor : méthode à appliquer à une connection.
Exemple : nom_python_du_curseur = nom_python_de_la_connexion . cursor()
Lancer des requêtes SQL
Liste des méthodes que l'on peut appliquer au curseur :
| close(...)
| Closes the cursor.
|
| execute(...)
| Executes a SQL statement.
|
| executemany(...)
| Repeatedly executes a SQL statement.
|
| executescript(...)
| Executes a multiple SQL statements at once. Non-standard.
Exemple :
resultat = nom_du_curseur . execute ( 'SELECT acronyme FROM ECOLE' )
Traitement des résultats
Pour récupérer lessultats d'une reqte SQL lancer par les fonctions execute, on utilise la méthode
fetchall qui renvoient des tuples.
Exemple :
r = resultat.fetchall()
Les tuples se traitent comme des listes sauf qu'ils ne peuvent pas être modifiés.
Exemple : a= ( 1 , 2 , "texte" ) # a est un tuple
>>> type(a)
<class 'tuple'>
>>> a[0]
1
>>> a[1]=5
TypeError: 'tuple' object does not support item assignment
férences : https://docs.python.org/3.1/library/sqlite3.html
1 / 6 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !