Examen de Python (2 heures) - Jean

Transcription

Examen de Python (2 heures) - Jean
Examen de Python (2 heures)
Jean-Philippe Attal (Campus de Cergy)
Elisabeth Ranisavljevic (Campus de Pau)
Ecole internationale des sciences du traitement de l’information
27 mai 2016
Cet examen vise à apprécier les connaissances des étudiants de niveau ingénieur de première année en programmation python. Le sujet est composé de 5 exercices. Tous documents écrits autorisés, pas de machine
à calculer, pas d’ordinateur, pas de téléphone portable. L’examen est composé de quatre pages et de cinq
exercices.
Exercice 1 :Fonctions
Soit la fonction suivante que l’on veut calculer pour une valeur n ∈ N
f (n) =
n
X
2 + cos(i)
i=1
i2
Question 1
En utilisant le package numpy et une boucle while, écrivez une fonction retournant la valeur de la fonction
pour un certain n.
Question 2
Reprenez la Question 1 en utilisant une liste de comprehension, c’est-à-dire simplifiez le code pour le rendre
plus lisible, plus rapide à écrire et plus simple à maintenir. Conseil : implémentez la fonction en une ligne
en utilisant une liste.
Exercice 2 : Fréquence de mots
Question 1
Écrire une fonction qui prend en paramètre un mot et un nom de fichier. Cette fonction retournera le nombre
d’occurences du mot dans le texte.
Question 2
On considère deux fichiers TXT qui vous sont déjà fournis. Le premier fichier contient 10 mots (un mot
par ligne), et le second est un document texte. Il vous est demandé d’écrire une procédure affichant pour
chacun des 10 mots le nombre d’occurences en utilisant la librairie mathplotlib. Le résultat attendu sera sous
la forme de la FIGURE.1.
Exercice 3 : Base de données avec dictionnaire
On considère une base de données construite à travers une liste de dictionnaires représentant une liste de
films. Chaque élément de la liste est un dictionnaire du type :
1
Figure 1 – figure
Occurences des 10 principaux mots
{”T itre” : ”BladeRunner”,
”Genre” : ”Action”,
”P ays” : ”U SA”,
”Roles” : [”HarrisonF ord”, ”RutgerHauer”],
”datedesortie” : 1982,
”Resume” : ”En 2019, lors de la décadence de Los Angeles, des êtres synthétiques, sans pensée,
sans émotions, suffisent aux differents travaux d’entretien.
Leur durée de vie n excède pas 4 années. Un jour,
ces ombres humaines se revoltent et on charge les tueurs,
appelés Blade Runner, de les abattre...”,
”entrees” : 2040000
}
Question 1
Écrire une fonction qui prend en entrée la liste de dictionnaires et retourne la liste des titres des films de la
base de données.
Question 2
Écrire une fonction retournant pour un acteur (par exemple Harrison Ford), la liste des titres de ses films
entre deux dates distinctes dont la réalisation est américaine (”Pays” : ”USA”) ainsi que le nombre d’entrées
réalisées. On pourra retourner une liste de tuples, le premier élément du tuple étant un titre et le second, le
nombre d’entrées réalisées.
Question 3
Écrire une fonction permettant de calculer le nombre d’entrées d’un acteur pour tous ses films dont la date
de sortie est postérieure à 1970.
Question 4
Écrire une fonction qui prend en argument la liste des dictionnaires des films et un mot (par exemple runner ), et renvoie la liste des titres des films qui contiennent ce mot.
Question 5
Écrire une fonction qui renvoie la liste des titres des films dont le genre est Drame entre 1955 et 1985.
Question 6
Un site internet de cinéma a annoncé qu’il ne stockera pas les films dont les résumés sont de plus de 150
2
mots. Créer une fonction renvoyant la liste des titres des films dont les résumés sont de plus de 150 mots.
Exercice 4 : Mathplotlib
Écrire une fonction permettant de dessiner les 81 cyclo harmoniques suivantes :
x(t) = (1 + cos( pq t))cos(t)
y(t) = (1 + cos( pq t))sin(t)
pour p et q entiers sur l’intervalle [0, 2qπ]. La fonction sauvegardera les figures au format png avec le nom
de fichier CH q p.png.
Exercice 5 : Fichiers binaires
On considère la base de données suivante qui a été prise à partir de la bibliothèque StatLib qui est maintenue à l’Université Carnegie Mellon. L’ensemble des données a été utilisé dans 1983 ”American Statistical
Association Exposition”, dans le domaine des statistiques et de l’aide à la décision.
Figure 2 – Données disponible sur https : //archive.ics.uci.edu/ml/machine−learning−databases/auto−
mpg/auto − mpg.data − original
La base de données comporte neuf colonnes, dont la signification dans l’ordre est :
—
—
—
—
—
mpg ( miles per gallo) : consommation en carburant des véhicules (en miles par gallo) (double)
cylinders : le cylindre (entier non signé)
displacement : le déplacement (double)
horsepower : puissance en chevaux (entier non signé)
weight : le poids (un entier)
3
—
—
—
—
acceleration : l’accélération (double)
model year : l’année du modèle (entier non signé)
origin : l’origine (entier non signé)
car name : le nom de la voiture (caractère non signé)
Les données entre parenthèses s’apparentent au type de la variable.
Le fichier étant volumineux, il a été spécifié de le retranscrire dans un autre format tel que le langage python
puisse immédiatement l’interpréter par ses structures. Il vous est demandé de transformer le fichier TXT
présenté ci−dessus en un fichier binaire dont les types des variables ont été précisés entre parenthèses. Le
fichier étant utilisé par des entreprises européennes, il vous est également demandé de faire la conversion suivante pour la première colonne 1 US (liquid) gallon = environ 3,79 litres sachant que 1 mile = environ 1, 6
kilomètre. Il vous est ensuite demandé d’écrire une fonction permettant de lire le fichier binaire sur la console.
4

Documents pareils