Cours avancé de développement Python
Chapitre
>
Niveau
Générateurs
Avancer manuellement un Générateur
Objectif
Utilisez un générateur dans une séquence manuelle pour assembler et produire des matériaux pour fabriquer du pain.
Plus loin, il y a une installation où vous pouvez assembler de la pâte à pain en utilisant les presses. Normalement, vous utiliseriez la fonction combine() pour assembler les matériaux, mais ce n'est pas le cas ici, les matériaux doivent d'abord être raffinés avant de pouvoir être assemblés.
Pour cette tâche, nous pouvons utiliser des générateurs car ils peuvent être personnalisés pour produire différents types de fichiers ainsi qu'avoir leur séquence appelée sur commande plutôt que d'être automatiquement produits comme le font les fonctions et les boucles. Voici un exemple :
def bread():
yield 5
yield "grain"
Le code ci-dessus a un générateur avec deux instructions yield, dont l'une produit un nombre réel et l'autre une chaîne de caractères. Nous pouvons produire les valeurs du générateur à volonté en utilisant la fonction next(). Comme ceci :
recipe = bread() # Configure le générateur player.place(next(recipe)) # La première valeur est appelée player.collect(next(recipe)) # La deuxième valeur est appelée
Dans l'exemple ci-dessus, le générateur est configuré et la fonction next() est utilisée avec le générateur pour appeler la première valeur yield à utiliser dans une fonction place(). Cela est répété avec la deuxième valeur mais est plutôt utilisé dans une fonction collect(). Cela facilite l'appel de valeurs de différents types dans une séquence sans avoir à utiliser plusieurs listes ou variables.
Un générateur nommé bread() sera défini dans l'éditeur de code mais il nécessitera des nombres de quantités pour chaque ingrédient afin que vous puissiez raffiner la pâte à pain. Ces nombres sont écrits sur le panneau à côté de l'installation. Configurez le générateur en l'utilisant, comme ceci : recipe = bread()
Commencez par vous rendre à la marque X lumineuse à côté de la cuve de lait et collect() le dernier lait de la cuve en utilisant la fonction next() du générateur, comme ceci : player.collect(next(recipe)). Ensuite, marchez jusqu'à la marque X dorée à côté du panneau et utilisez la fonction speak() pour obtenir les numéros de quantité nécessaires pour que le générateur produise le pain et notez-les dans le générateur. Les données sont stockées dans une constante nommée "sign" et seraient appelées comme ceci : player.speak(sign).
Une fois que toutes les valeurs sont entrées dans le générateur, entrez dans l'installation et utilisez player.place(next(recipe)) sur les marques X sombres et player.collect(next(recipe)) sur les marques X lumineuses afin de compléter le niveau.