Cours avancé de développement Python
Chapitre
>
Niveau
Fonctions avancées
Fonctions partielles
Objectif
Emballez et placez les matériaux de construction qui ont été livrés au quai en utilisant des fonctions partielles.
Certaines fournitures viennent d'être livrées à un quai, elles doivent être emballées et stockées afin de pouvoir être utilisées comme matériaux de construction. Les matériaux doivent être enveloppés dans un tissu et attachés avec du fil. Il est important de peser tous les articles lors de l'emballage afin qu'ils puissent être transportés efficacement par la suite. Pour faciliter cela, nous pouvons optimiser ce processus en utilisant des fonctions partielles.
Une fonction partielle est une fonction personnalisée qui est raccourcie en n'ayant pas besoin d'ajouter des valeurs d'arguments qui sont en grande partie constantes. Cela vous permet d'utiliser des fonctions qui prennent plusieurs arguments et de les exécuter avec un seul argument, ou avec le nombre d'arguments que vous choisissez.
from functools import partial
Pour commencer, vous devez importer partial depuis le module connu sous le nom de functools, ceci vous permettra de créer des fonctions partielles. L'importation du code se fait toujours en haut de l'éditeur de code.
Créez une fonction nommée weight qui prend trois (3) arguments : thread, cloth et material. Cette fonction vous permettra de calculer le poids des matériaux emballés ; nous pouvons optimiser ce processus davantage en le canalisant via une fonction partielle.
def weight(thread, cloth, material):
return 2 * thread + 5 * cloth + material * 10
package = partial(weight, 4, 2)
Créez une fonction partielle nommée package. Elle s'instancie de manière similaire aux fonctions lambda. Utilisez partial() pour alimenter la fonction et ajoutez le nom de la fonction ainsi que des valeurs fixes pour les arguments que vous souhaitez attribuer.
Tous les arguments de la fonction originale que vous n'affectez pas deviendront ceux qui devront être fournis par la fonction partielle. Dans le cas de la fonction partielle package(), il s'agit de l'argument material.
Marchez jusqu'aux marques X sombres devant les caisses pour prendre les matériaux d'emballage. Sur la marque X du tapis jaune, utilisez la fonction collect() pour acquérir "thread" et marchez jusqu'à la marque X du tapis violet pour utiliser la fonction collect() et acquérir "cloth". Ces éléments seront utilisés pour emballer les matériaux.
Traversez le quai et récupérez tous les matériaux de construction, à savoir : bricks, planks, red_bricks et wood. Une fois que vous les avez récupérés, ajoutez le nombre que vous avez collecté de chacun dans une variable portant le même nom que le matériau, par exemple : bricks = 3.
Ensuite, marchez jusqu'aux marques X claires devant les caisses et calculez le poids de chaque matériau de construction avant de le stocker. Utilisez la fonction speak() en conjonction avec la fonction partielle package() pour calculer le poids. Utilisez les variables correspondant aux matériaux comme arguments pour la fonction package(), par exemple :
player.speak("Package weighs %s pounds" % package(bricks)) player.place(package(bricks))
Poursuivez en utilisant la fonction place() pour stocker le matériau à l'intérieur des caisses, en utilisant également la fonction package(), comme dans l'exemple ci-dessus.
Sur la marque X claire avec le tapis red, pesez et stockez bricks. Sur la marque X claire avec le tapis blue, pesez et stockez planks. Sur la marque X claire avec le tapis orange, pesez et stockez red_bricks. Sur la marque X claire avec le tapis green, pesez et stockez wood. Stockez et pesez les quatre (4) matériaux dans les caisses appropriées afin de terminer le niveau.