Cours avancé de développement Python
Chapitre
>
Niveau
Fonctions avancées
Fonctions Lambda
Objectif
Utilisez des fonctions lambda pour documenter certains consommables afin qu'ils puissent être collectés pour l'expédition ultérieure.
Certains des fruits et des baies dans le champ sont presque prêts à être cueillis pour pouvoir être stockés, expédiés et vendus. Il serait judicieux de répertorier les articles qui sont presque prêts afin d'avoir une estimation du nombre de produits de ce champ en cours d'emballage et d'expédition.
Afin d'optimiser votre code, vous pouvez utiliser les fonctions lambda, c'est une autre manière de créer des fonctions personnalisées, mais c'est plus rapide lorsque les fonctions que vous créez sont plus simples.
# Normal Custom Function
def calculate(x , y , z) :
return( (x+y+z) *2 )
# Lambda Function
calculate = lambda x,y,z : (x + y + z) * 2
Dans l'exemple ci-dessus, vous avez deux fonctions, une fonction personnalisée et une fonction lambda. Bien qu'elles soient écrites différemment, elles sont fonctionnellement identiques, la fonction lambda est tout simplement plus facile à utiliser et peut être mise en place rapidement à la volée dans le code. Cela dit, la méthode classique de définition des fonctions reste très utile pour des séquences de code complexes.
Il existe deux (2) types d'articles qui peuvent être classés dans le champ : "fruits" et "berries". Parmi ces deux (2) types, il y a trois (3) fruits : apples, pears et oranges ; et il y a trois (3) baies : red, blue et purple .
Commencez par configurer la fonction lambda illustrée ci-dessus nommée calculate, cela nous permettra d'obtenir le nombre d'articles prévus pour la saison en additionnant trois articles, puis en les multipliant par deux (2). Créez une autre fonction lambda nommée estimate afin d'estimer les articles qui seront collectés, en tant que fonction speak personnalisée. Enfin, configurez une fonction lambda nommée total qui additionne deux valeurs et soustrait une troisième valeur appelée loss.
# Calculate items calculate = lambda x,y,z : (x + y + z) * 2 # Estimate items estimate = lambda number , name : player.speak( "I estimate %d %s this season" % (number,name) ) # Total all items total = lambda num1, num2, loss : ( (num1 + num2) - loss)
Créez des variables pour chacun des trois (3) fruits, et additionnez le nombre de chacun présents dans le champ. Marchez jusqu'au marqueur X sombre et utilisez la fonction lambda calculate() avec les trois variables de fruits, puis stockez la valeur dans une variable personnalisée nommée fruit_number, comme ceci : fruit_number = calculate(orange,pear,apple). Ensuite, utilisez la fonction lambda estimate() en utilisant fruit_number comme le nombre et "fruits" comme nom, comme ceci : estimate(fruit_number, "fruits" ).
Une fois que vous avez terminé avec les fruits, marchez jusqu'au marqueur X clair et faites de même avec les baies. Configurez des variables pour les trois (3) baies avec le nombre d'arbustes que vous comptez dans le champ, puis configurez la fonction lambda de la même manière que pour les fruits, comme ceci : berry_number = calculate(red,blue,purple). Utilisez la fonction lambda estimate avec berry_number et "berries" comme arguments.
Il existe une constante nommée doc qui contient les estimations du mois dernier pour les produits perdus. Dirigez-vous vers le magasin, marchez vers le marqueur X doré et utilisez la fonction speak() avec la constante pour lire un document sur la table afin de déterminer les chiffres du mois dernier.
Une fois que vous connaissez les chiffres du mois dernier, marchez jusqu'au marqueur X sombre sur le tapis violet, face à la table pour déterminer les totaux de ce mois. Créez une variable nommée season pour calculer les totaux de la saison, utilisez fruit_number et berry_number comme les nombres, et utilisez le nombre déterminé à partir de doc comme argument de perte, comme ceci : season = total(berry_number,fruit_number, number found in doc constant)
Ensuite, utilisez la fonction lambda estimate() en utilisant la variable season comme argument pour le nombre et "products" comme argument pour le nom afin de compléter le niveau.