TP 2 Formation Python
Theme : fonctions, Structures de données, modules, fichiers, POO
Exercice 1 :
Pour cet exercice, créez d'abord un dict de n'importe quelle taille, dans lequel les clés et
les valeurs sont également uniques. (Une clé peut apparaître comme valeur, ou vice versa.)
Voici un exemple :
d = {'a':1, 'b':2, 'c':3}
Retournez le dict à l'envers, de telle sorte que les clés deviennent les valeurs et vice-versa.
Exercice 2 : formatage
Considérons la structure de données suivantes :
PEOPLE = [('Donald', 'Trump', 7.85), ('Vladimir', 'Putin', 3.626),('Jinping', 'Xi', 10.603)]
On veut le formater pour qu’il ressemble à cela :
Donald Trump 7.85
Vladimir Putin 3.62
Jinping Xi 10.60
Tous les noms doivent être écrit sous 10 caractères, les nombres sous 5 caractères max avec
2 chiffres après la virgule et un padding entre les colonnes
Exercice 3 : Lecture de fichier
Pour lire un fichier on utilise la fonction open(chemin_vers_le_fichier, mode d’ouverture).
La fonction open est mise dans un contexte avec le mot-clé with.
A l’intérieur du contexte on peut :
Lire le fichier ligne par ligne
On peut tout lire et mettre le contenu dans une structure de données
On peut écrire dans un fichier avec write
Dans cet exercice, écrivez une fonction (get_final_line) qui prend un nom de fichier comme
Argument, un mode de lecture(‘r’ ou’rb’) et un entier representant le numero de la ligne à lire. La
fonction doit renvoyer le contenu de la ligne de ce fichier à l'écran.
Exercice 5 :
Ecrire une fonction qui lit le contenu de [Link] et retourne sous forme de dictionnaire
avec comme clés les usernames et valeurs les userid. Chaque ligne correspond à un
enregistrement utilisateur, divisé en champs séparés par des deux-points. Le premier champ
(index 0) est le nom d'utilisateur et le troisième champ (index 2) est le numéro
d'identification unique de l'utilisateur. (Dans le système d'où vient le fichier /etc/passwd,
nobody a l'ID -2, root a l'ID 0 et le démon a l'ID 1.) Pour nos besoins, vous pouvez ignorer
tous sauf ces deux champs.
Indications : regarder ce que font les methodes startswith, endswith, split, strip
Exercice 6 :
Ecrire une fonction qui prend en entrée un fichier et compte :
Nombres de caractéres (espaces inclus)
Nombre de mots
Nombre de lignes
Nombre de mots uniques (majuscule differents de minuscules)
Exercice 7:
Ecrire une fonction qui prend une liste de liste et le transforme en une liste unique.
Par exemple : [[2,3,4], [7,-1,5]] sera transforme en [2,3,4,7,-1,5].
Exercice 8 :
Ecrire une fonction qui retourne un dictionnaire dont les clés sont les lettres de l’alphabet
et les valeurs les nombres de 1 à 26. Le dictionnaire doit être écrit en comprehension.
Ecrire une fonction qui utilise le dictionnaire pour sommer les valeurs des lettres d’un mot
donné. Cette valeur était appelé gematria.
Ecrire une fonction qui prend en entrée une liste de mots fournis par l’utilisateur et
retourne une liste composée d’ensembles de mots ayant le même gematria.
Exercice 8 :
Nous représenterons les animaux comme des objets Python, chaque espèce étant définie
comme une classe distincte. Tous les objets d'une classe particulière auront la même espèce et
le même nombre de pattes, mais la couleur variera d'une instance à l'autre. On peut ainsi créer
un mouton blanc, également récupérer des informations sur l'animal à partir de l'objet en
récupérant ses attributs (espèce, couleur, nombre de pieds).
Si on convertit un animal en String, on pourra avoir tous les détails.
Nous allons supposer que notre zoo contient quatre types d'animaux différents : des moutons,
loups, serpents et perroquets.
Créez des classes pour chacun de ces types d'animaux, de sorte que nous puissions imprimer
chacun d'eux et obtenir un rapport sur leur couleur, leur espèce et nombre de pieds.
Utiliser __name__ pour creer une variable name qui portera le nom de chaque classe.
Ajouter une documentation de la classe en utilisant docstring
Exercice 9
Maintenant que nous avons créé des animaux, il est temps de les mettre en cage. Pour cet
exercice, créez une classe Cage, dans laquelle vous pouvez mettre un ou plusieurs animaux.
Lorsque vous créez une nouvelle cage, vous lui attribuez un numéro d'identification unique.
(L'unicité n'a pas besoin d'être imposé, mais cela vous aidera à faire la distinction entre les
cages.)
Vous allez puis pouvoir invoquer une methode add_animals sur la nouvelle cage, en passant
un nombre quelconque d'animaux qui sera mis dans la cage. Je souhaite également que vous
définissiez une méthode __repr__ afin que l'impression d'une cage n'imprime pas seulement
l'ID de la cage, mais également chacun des animaux qu'elle contient.
Exercice 10 : Enfin, le moment est venu de créer notre objet Zoo. Il contiendra des objets
cage, et ils contiendront à leur tour des animaux. Notre classe Zoo devra prendre en charge les
opérations suivantes :
Étant donné un zoo z, nous devrions pouvoir imprimer toutes les cages (avec leurs
numéros d'identification) et les animaux à l'intérieur en appelant simplement print(z).
Nous devrions pouvoir obtenir les animaux avec une couleur particulière en invoquant
la méthode z.animals_by_color. Par exemple, nous pouvons obtenir tous les animaux
noirs en appelant z.animals_by_color('noir'). Le résultat devrait être une liste d'objets
animaux.
On devrait pouvoir obtenir les animaux avec un certain nombre de pattes en invoquant
la méthode z.animals_by_legs. Par exemple, nous pouvons obtenir tous les animaux à
quatre pattes en appelant z.animals_by_legs(4). Le résultat devrait être une liste
d'objets animaux.
Enfin, nous avons un donateur potentiel à notre zoo qui souhaite fournir des
chaussettes à tous des animaux. Ainsi, nous devons pouvoir invoquer
z.number_of_legs() et obtenez un décompte du nombre total de pattes pour tous les
animaux de notre zoo.