Coding for KidsCoding for Kids
Niveaux CréatifsDéfisGuide de l'Enseignant
Voter pour les fonctionnalités
Cours avancé de développement Python
Chapitre
>
Niveau

Générateurs
Créer un générateur

Parfois, vous pouvez vouloir générer des valeurs de manière cohérente plutôt que de produire un résultat unique. À l'instar des fonctions, les générateurs sont écrits et exécutés de la même manière, sauf qu'ils utilisent yield() au lieu de return() lorsqu'ils produisent une sortie.

Dans cet exercice, vous devez remplir des bouteilles de lait provenant des réservoirs de l'étable. Utilisez un générateur pour itérer le remplissage des bouteilles et assurez-vous que tout surplus de lait soit recueilli des réservoirs.

Guide

Objectif

Remplissez des bouteilles avec du lait en pompant les réservoirs de lait à l'aide de générateurs.

Les machines qui stockent le lait de vache sont presque pleines, vous devez mettre le lait en bouteille et le stocker avant qu'il ne se gâte. Cela peut être une tâche un peu délicate en utilisant des moyens normaux et la quantité de lait que vous pouvez extraire peut varier un peu. Heureusement, vous pouvez utiliser des générateurs pour rendre ce processus fluide et simple.

Il y a deux (2) réservoirs de lait qui doivent être pompés et mis en bouteille. Chaque machine a des compartiments qui stockent le lait, ceux-ci sont représentés par des constantes de liste nommées : tank_a et tank_b. De plus, chaque réservoir a tendance à avoir un surplus restant que vous pouvez collecter.

Les générateurs suivent la même syntaxe que les fonctions mais utiliseront yield au lieu de return pour leur sortie. Configurez un générateur nommé fill() et définissez-le avec l'argument list, c'est là où vous entrez les constantes mentionnées dans le paragraphe ci-dessus.

def fill(list): for x in range(3): yield list[x] yield 5

Le générateur lit les données des trois (3) champs dans les constantes de liste, représentées par les compartiments dans la machine, et ajoute un surplus à la fin qui est de cinq (5).

Collectez l'objet panier dans le champ pour avoir accès aux bouteilles nécessaires au remplissage et marchez vers les deux (2) marques X pour collecter le lait en utilisant une boucle for.

Grâce à l'instruction yield, les valeurs produites par le générateur peuvent être lues directement à partir d'une boucle for également. Configurez-en une qui utilise la fonction collect() pour acquérir le "lait" de la machine. Ensuite, utilisez speak() pour vérifier combien de lait chaque bouteille contient. Par exemple :

for bottles in fill(tank_a): player.collect("milk") player.speak("%d pintes de lait collectées" % (bottles))

Écrivez et utilisez cette boucle for sur les deux marques X, sur la marque X claire utilisez l'argument tank_a et sur la marque X sombre utilisez l'argument tank_b afin de compléter le niveau.

Livre de Code