Extraction d'une partie des données⚓︎
Exemple pour les exercices suivants
La fonction suivante permet d'extraire la liste des noms du pokedex :
def liste_noms(pokedex):
noms = []
for p in pokedex:
noms.append(nom(p))
return noms
Il est possible de l'écrire de façon plus simple en utilisant une définition par compréhension :
def liste_noms(pokedex):
return [nom(p) for p in pokedex]
Pour les exercices suivants, vous pouvez utiliser la forme que vous préférez.
Exercice 5
Écrire une fonction selection_par_generation
qui prend en paramètres un entier gen
et une liste de dictionnaires pokedex
, et qui renvoie la liste de tous les pokémons qui sont de la génération donnée.
>>> liste_noms(selection_par_generation(1, pokedex))
['Bulbizarre', 'Herbizarre', 'Florizarre', 'Méga-Florizarre',...
Exercice 6
Écrire une fonction selection_par_type
qui prend en paramètres un texte t
et une liste de dictionnaires pokedex
, et qui renvoie la liste de tous les pokémons du pokédex qui ont le type t
.
Indication
La fonction types
renvoie une liste de types. Il faut donc vérifier si le type passé en paramètre en dans cette liste ou pas.
>>> selection_par_type("Fée", pokedex)
[OrderedDict([('Nom', 'Mélofée'), ('HP', 70), ('Attaque', 45),...
>>> len(selection_par_type("Fée", pokedex))
40
>>> liste_noms(selection_par_type("Fée", pokedex))
['Mélofée', 'Mélodelfe', 'Rondoudou', 'Grodoudou', 'M. Mime',...
Exercice 7
Écrire une fonction plus_rapide_que
qui prend en paramètre (pokemon, pokedex)
qui renvoie la liste de tous les pokémons du pokédex qui sont strictement plus rapides que pokemon
.
>>> plus_rapide_que(bulbizarre, pokedex)
[{'Nom': 'Herbizarre', 'HP': 60, 'Attaque': 62, 'Défense': 63, 'Vitesse': 60,
'Génération': 1, 'Types': ['Plante', 'Poison'], 'Légendaire': False},
...
]
>>> len(plus_rapide_que(cherche('Pikachu', pokedex), pokedex))
184
Exercice 8
Écrire une fonction plus_fort
qui prend en paramètre une liste de dictionnaires pokedex
et qui renvoie le pokémon avec la valeur d'attaque maximale contenue dans le Pokédex. S'il y en a plusieurs, le premier rencontré est renvoyé.
>>> plus_fort(selection_par_generation(1, pokedex))
OrderedDict([('Nom', 'Méga-Mewtwo X'), ('HP', 106), ('Attaque', 190),
('Défense', 100), ('Vitesse', 130), ('Génération', 1),
('Types', ['Psy', 'Combat'])])