Cours avancé de développement Python
Chapitre
>
Niveau
Fonctions Avancées
Fonctions imbriquées
Objectif
Collecter, redistribuer et ranger le tissu produit par les machines en utilisant des fonctions imbriquées.
Parfois, vous voudrez placer des fonctions à l’intérieur d’autres fonctions afin d’étendre les capacités de cette fonction. Celles-ci s’appellent des fonctions imbriquées ou fonctions internes, et elles ont diverses utilisations, allant de la création de code réutilisable simple à l’intérieur d’une fonction, jusqu’à la protection de vos fonctions contre des manipulations externes.
Dans l'atelier, il y a plusieurs machines à fabriquer du tissu, certaines possèdent du tissu prêt à être stocké, d’autres nécessitent du fil pour terminer la production du tissu. Chacune d’elles est placée devant un tapis soit "red" soit "green" qui indique comment elle est utilisée. Dans l’éditeur de code, une fonction sera écrite qui nous permettra d'exploiter la machine et soit de collecter, soit de déposer des matériaux depuis la machine.
def operate_machine(color):
def collect_cloth():
# Collect Code
player.speak("Cloth is ready for storage")
def place_thread():
# Place Code
player.speak("Machine needed more materials")
if color == "green":
collect_cloth()
if color == "red":
place_thread()
La fonction s’appelle operate_machine et prend un argument nommé color. Selon la couleur du tapis devant la machine, entrer soit "red" soit "green" comme argument modifiera le fonctionnement de la machine, vous permettant soit de déposer, soit de collecter des éléments.
Dans la fonction, vous trouverez deux fonctions imbriquées, nommées collect_cloth() et place_thread() utilisées pour les actions décrites par leurs noms. Il manque des lignes de code nécessaires pour exécuter leur action. Dans collect_cloth(), ajoutez la ligne player.collect("cloth"), suivie de player.speak("Quilt is ready for storage") et dans place_thread(), ajoutez la ligne player.place("thread") suivie de player.speak("Machine needed more materials").
Une fois les lignes de code manquantes ajoutées aux fonctions imbriquées, dirigez-vous vers le X lumineux devant la caisse et collectez le "thread" pour l’utiliser dans la machine, comme ceci : player.collect("thread").
Marchez ensuite vers les X sombres à l’intérieur de l’atelier et utilisez la fonction personnalisée operate_machine en faisant face aux machines. Ajoutez soit "red" soit "green" en argument selon la couleur du tapis sur lequel se trouve le X, par exemple : operate_machine("red"). Cela vous permettra de déposer le fil et de collecter le tissu.
Une fois que vous avez collecté tout le tissu, dirigez-vous vers le X doré à côté de la caisse à l’arrière et utilisez la fonction place() pour stocker le tissu. Créez une variable nommée cloths, ajoutez-y le nombre de tissus que vous avez collectés et stockez-la dans la caisse afin de compléter le niveau, comme ceci : player.place(cloths).