Geavanceerde Python-ontwikkelingscursus
Doelstelling
Gebruik generator in een handmatige volgorde om materialen samen te stellen en te produceren om brood te maken.
Voor je ligt een faciliteit waar je brooddeeg kunt samenstellen met behulp van de persen. Normaal zou je de functie combine() gebruiken om materialen samen te voegen, maar dat is hier niet het geval, de materialen moeten eerst worden verfijnd voordat ze kunnen worden samengevoegd.
Voor deze taak kunnen we generators gebruiken, omdat ze kunnen worden aangepast om verschillende bestandstypen uit te voeren en hun volgorde op commando kan worden aangeroepen in plaats van automatisch zoals functies en lussen doen. Hier is een voorbeeld:
def bread():
yield 5
yield "grain"
De bovenstaande code heeft een generator met twee yield-verklaringen, waarvan er een een reëel getal produceert en een andere een string. We kunnen de waarden van de generator naar wens produceren met behulp van de next()-functie. Als volgt:
recipe = bread() # Stelt de generator in player.place(next(recipe)) # Eerste waarde wordt opgeroepen player.collect(next(recipe)) # Tweede waarde wordt opgeroepen
In het bovenstaande voorbeeld wordt de generator ingesteld en de next()-functie gebruikt met de generator om de eerste yield-waarde op te roepen voor gebruik in een place()-functie. Dit wordt herhaald met de tweede waarde, maar wordt in plaats daarvan gebruikt in een collect()-functie. Dit maakt het gemakkelijk om waarden van verschillende typen in een volgorde op te roepen zonder meerdere lijsten of variabelen te hoeven gebruiken.
Een generator genaamd bread() zal in de code-editor worden gedefinieerd, maar deze zal getalhoeveelheden voor elk ingrediënt nodig hebben om het brooddeeg te verfijnen. Deze cijfers staan op het bord naast de faciliteit. Stel de generator in voor gebruik door deze te refereren, als volgt: recipe = bread()
Loop eerst naar de lichte X-markering naast de melktank en collect() de laatste melk uit de tank met behulp van de generator next()-functie, als volgt: player.collect(next(recipe)). Loop vervolgens naar de gouden X-markering naast het bord en gebruik de speak()-functie om de getallen op te halen die nodig zijn voor de generator om het brood te produceren en schrijf ze op in de generator. De gegevens worden opgeslagen in een constante genaamd "sign" en worden als volgt opgeroepen: player.speak(sign).
Zodra alle waarden in de generator zijn ingevoerd, ga de faciliteit in en gebruik player.place(next(recipe)) op donkere X-markeringen en player.collect(next(recipe)) op lichte X-markeringen om het niveau te voltooien.