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
24 juin 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 et suites matricielles
Soient deux suites numériques couplées (un ) et (vn ) définies pour tout n ∈ N par u0 = 2, u1 = 4 et
un+1 = 2un − 3vn + 1
vn+1 = −un + 5vn − 4
2 −3
1
un
A=
,B =
, et Un =
−1 5
−4
vn
On peut donc écrire Un+1 = AUn + B.
Question 1
En utilisant le package numpy et une boucle while, écrivez une fonction retournant deux listes contenant
respectivement les valeurs de un et les valeurs de vn pour un certain n.
Question 2
Ecrivez une fonction permettant de calculer Un+1 .
Exercice 2 : Lingo
Dans le jeu Lingo, il y a un mot caché de 5 caractères. L’objectif du jeu est de trouver le mot en devinant,
et en retour recevoir deux sortes d’indices :
1. les caractères qui sont totalement corrects, autant dans le caractère que dans la position dans le mot
2. les caractères qui sont présents dans le mot mais pas à la bonne position.
Question 1
Écrire la fonction qui permet, à partir d’un fichier contenant sur chaque ligne des mots de 5 lettres, de tirer
aléatoirement un mot et de le retourner.
Question 2
Écrire la méthode qui permet de jouer à Lingo. On utilisera les crochets pour définir les caractères qui sont
justes et à la bonne place, et on utilisera des parenthèses pour définir les caractères qui existent dans le mot
1
Figure 1 – Sortie de la console
mais pas à la bonne position. Par exemple, supposons que la méthode veuille faire deviner le mot ”tigre”.
La méthode devrait permettre d’interagir de la façon de la FIGURE 1.
Exercice 3 : Intégrale
Dans cet exercice, nous allons dessiner une courbe, calculer son intégrale entre deux bornes et mettre en
évidence la surface de l’intégrale.
Question 1 Définir la fonction f (x) = (x − 3) ∗ (x − 5) ∗ (x − 7) + 85.
Question 2 Calculer l’intégrale, à l’aide de la fonction quad du module scipy, de la fonction f entre a = 2
et b = 9.
Question 3 : Tracer la fonction f sur l’intervalle [0; 10] avec sa légende. Remplir la zone sous la courbe
entre [a, b] à l’aide de la méthode fill between. Ajouter un titre au graphique et l’afficher.
Exercice 4 : Base de données avec dictionnaire
On considère une base de données d’acteurs construite à travers un dictionnaire. Les clés du dictionnaire
sont les noms des acteurs alors que les valeurs sont les informations relatives aux films et séries dans lesquels
ils ont participé. Voici un exemple avec comme clé ”Harrison Ford” et comme valeurs, les informations relatives à ses films. La valeur est elle même un dictionnaire. L’exemple suivant montre les informations relatives
à Harrison Ford :
dico Acteurs[”Harrison Ford ”] = {”f ilms” : [”Blade Runner”, ”Présumé innocent”,
”A propos d’Henry”, ”Le Fugitif”, ”Droit de passage”, ...],
”date de naissance” : ”13 juillet 1942”,
”Nationalité” : ”américaine”
}
On adjoint au dictionnaire d’acteurs un dictionnaire relatif aux films. Ce dictionnaire permet d’obtenir
des informations sur un film en particulier, comme sa date de sortie, le pays de production ou encore le résumé.
dico F ilms[”Blade Runner”] = {”Genre” : ”Action”,
”P ays” : ”U SA”,
”date de sortie” : 1982
”acteur principal ” : ”Harrison Ford ”
”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,
2
ces ombres humaines se revoltent et on charge les tueurs appelés Blade Runner, de les abattre...”,
”entrees” : 2040000
”Budgetendollars” : ”28000000”
”BoxOf f iceendollars” : ”32868943”
}
Question 1
Écrire une fonction qui prend en entrée le dictionnaire d’acteurs et retourne la liste des titres des films. Etant
donné que certains acteurs ont joué dans le même film, on veillera à ce que cette liste ne contienne que des
éléments uniques.
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 le dictionnaires d’acteurs et un mot (par exemple runner ), et
renvoie la liste des titres des films associés aux acteurs qui contiennent ce mot. On pourra renvoyer un
tuple où le premier élément est le nom de l’acteur et le deuxième éléments, une liste de films répondant aux
contraintes de la question.
Question 5
Écrire une fonction qui renvoie la liste des titres des films dont le genre est Drame entre 1955 et 1985 et qui
ont rapporté de l’argent.
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
mots. Créer une fonction renvoyant la liste des titres des films dont les résumés sont de plus de 150 mots
pour un acteur en particulier.
Exercice 5 : En vue d’une étude de clustering (Fichiers binaires)
On considère le fichier retranscrivant les données de certaines plantes, à savoir les iris. Le fichier contient
5 attributs, à savoir :
— longueur des sépales en cm (double)
— largeur des sépales en cm (double)
— longueur des pétales en cm (double)
— largeur des sépales en cm (double)
— l’espèce (caractère non signé)
Un laboratoire de recherche à besoin d’utiliser ces données pour créer un algorithme de clustering. Cependant, le temps de lecture du fichier est assez long, et il a été convenu d’utiliser des fichier binaires pour
accélérer le traitement.
Question 1
3
Figure 2 – figure
Les iris
Il est vous est demandé de transformer le fichier TXT présenté ci-dessus (FIGURE 2) en un fichier binaire
dont les types des variables ont été précisés entre parenthèses.
Question 2
Vous avez pris la décision d’utiliser cinq listes qui contiendront ces données (une liste par colonne). Il vous
est demandé de lire le fichier binaire créé à la question 1, et d’alimenter les listes. Devant régulièrement
utiliser ces listes pour vos travaux, vous avez décidé d’utiliser le module Cpickle pour sérialiser vos 5 listes.
Ecrire deux fonctions, une pour sérialiser les 5 listes, et une autre pour les charger.
4