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