Cours avancé de développement Python
Chapitre
>
Niveau
Listes Avancées
Mapper, Filtrer, Réduire
Objectif
Terminez le mélange et la production de crème glacée en utilisant Maps, Filter et Reduce.
Certaines des saveurs de crème glacée sont faibles ou vides, mais nous disposons de suffisamment de matériaux pour compenser et assembler plus de crème glacée. Pour cela, vous devez utiliser Map, un outil puissant qui vous permet de minimiser la quantité de code à écrire en condensant les boucles et le code conditionnel. Les fonctions Filter et Reduce sont complémentaires à la fonction Map et offrent la polyvalence nécessaire à votre codage.
Pour commencer, vous devez importer Reduce depuis la bibliothèque functools afin d'utiliser la fonction, en ajoutant ce code au début de votre programme : from functools import reduce. Les fonctions Map et Filter sont intégrées à Python et n'ont pas besoin d'être importées.
Tout d'abord, vous devez prendre quelques ingrédients dans le congélateur sans porte, marcher vers la marque X dorée, faire face à la porte et l'ouvrir en utilisant la fonction open(). Prenez tous les pots de "cream" dans le congélateur, puis marchez vers la marque X lumineuse située sur le tapis vert.
Il existe trois constantes de liste dans le terrain nommées : vanilla, strawberry et chocolate. Chaque constante contient une combinaison d'ingrédients qui constitue la saveur de la crème glacée. À la marque X verte, vérifiez le contenu de la constante de liste strawberry. Utilisez d'abord la fonction place() pour déposer le "cream" que vous avez préalablement pris, puis utilisez la fonction speak() pour vérifier le contenu de la constante de liste strawberry.
Une fois la vérification effectuée, il est temps d'utiliser la fonction Map avec la constante de liste strawberry, dont les éléments sont tous des décimaux. En utilisant la fonction map(), vous pouvez arrondir tous les éléments d'une liste, évitant ainsi de devoir itérer sur chaque élément dans une boucle pour les arrondir un par un. Pour ce faire, créez une liste nommée map1 et utilisez la fonction map() en conjonction avec la liste strawberry et la fonction round(), de cette façon : map1 = list(map(round, strawberry)). Une fois cela fait, utilisez la fonction speak() avec map1 afin de vérifier le résultat.
Une fois cela terminé, nous passons à Filter, qui fonctionne de la même manière que Map, mais nécessite une fonction à utiliser en conjonction. En haut de l'éditeur, vous trouverez une fonction prédéfinie nommée main_ingredients qui détermine si un nombre est supérieur à 25.
def main_ingredients(value):
return value > 25
Au lieu de parcourir une boucle, vous pouvez utiliser cette fonction en conjonction avec la fonction filter() pour composer une nouvelle liste avec les éléments supérieurs à 25, ces derniers étant les ingrédients principaux. Créez une nouvelle liste nommée filter1 et appliquez la fonction filter() avec main_ingredients et map1 afin de déterminer tous les ingrédients principaux présents dans la liste Map que vous avez créée, de cette manière : filter1 = list(filter(main_ingredients, value)). Une fois terminé, utilisez la fonction speak() avec filter1 afin de vérifier le résultat.
Maintenant, nous passons à Reduce, qui s'utilise de la même manière que Filter, mais vous permet de réduire une liste à une seule unité. Tout comme Filter, elle utilise une fonction personnalisée, cette fois nommée custom_sum, qui additionne dynamiquement deux nombres.
def custom_sum(first, second):
return first + second
Créez une variable nommée reduce1 et utilisez la fonction reduce() en conjonction avec la fonction custom_sum et filter1 afin de consolider tous les éléments en une seule unité, de cette manière : reduce1 = reduce(custom_sum, filter1). Une fois terminé, utilisez la fonction speak() avec reduce1 afin de vérifier le résultat.
Maintenant que vous avez complété le cycle Map, Filter, Reduce, répétez le même cycle sur les marques X lumineuses situées sur les tapis rouge et bleu. Sur le tapis rouge, utilisez la constante de liste vanilla et créez map2, filter2 et reduce2. Sur le tapis bleu, utilisez la constante de liste chocolate et créez map3, filter3 et reduce3.
Marchez jusqu'à la dernière marque X lumineuse, qui se trouve sur le tapis violet, puis ajoutez reduce1, reduce2 et reduce3 en combinant les ingrédients principaux de vanille, fraise et chocolat. Créez une variable nommée neapolitan et additionnez tous les résultats de Reduce, de cette manière : neapolitan = reduce1+reduce2+reduce3. Utilisez la fonction speak() avec cette combinaison afin de la vérifier, puis employez la fonction place() avec celle-ci pour créer la crème glacée napolitaine et compléter le niveau.