Geavanceerde Python-ontwikkelingscursus
Doel
Verzamel wol en spin het tot garen met behulp van de spinnewielen door gegevens naar een generator te sturen.
Sommige schapen worden een beetje te wollig, het is het beste om ze te scheren en hun wol te verzamelen. Je kunt de wol dan door een spinnewiel halen om garen te produceren. Om dit te bereiken moeten we een generator gebruiken, omdat de hoeveelheid garen en wol die verwerkt wordt sterk kan variëren.
Definieer eerst een generator die in staat is om garen te spinnen, noem het spin(). Deze generator moet worden opgezet om externe invoer te gebruiken om te functioneren. Het leest gegevens van yield en plaatst deze in een variabele, vervolgens wijzigt het de inhoud door de lengte met elke cyclus te vergroten, om uiteindelijk een resultaat te produceren.
def spin():
cycle = 1
while True:
cycle += 1
yarn = yield
yarn = yarn * cycle
yield player.speak("Je hebt %d ft garen gesponnen" % (yarn))
Omdat dit een generator is, kan de while()-instructie binnenin worden gepauzeerd en gewijzigd om de gewenste uitvoer te produceren. Dit niveau van controle ligt aan de basis van wat een generator is en hoe het nuttig kan zijn bij het verwerken van gegevens. Om gegevens in de generator in te voegen, definieer je het en gebruik je de send()-functie om het met gewenste gegevens te voeden, bijvoorbeeld:
spindle = spin() # Maak een instantie van de generator next(spindle) # Voer de generator een enkele stap uit spindle.send(6) # Voer gegevens in de generator in # In dit geval stuur je het nummer 6
Loop naar de X gemarkeerde plek door de gekleurde tapijten en kijk naar de schapen. Er is een constant woordenboek genaamd sheep dat de waarde bevat hoeveel wol je van elk schaap kunt scheren. Gebruik de speak() functie met het woordenboek en de kleur van het tapijt waarop je staat, om de wol van het schaap te scheren en te controleren hoeveel je hebt verzameld. Bijvoorbeeld: player.speak(sheep["green"]) .
Er zijn in totaal vier (4) gekleurde tapijten: "green" , "red" , "blue" en "orange" . Zodra je de schapen hebt geschoren, loop je naar de donkere X gemarkeerde plekken bij elk gekleurd tapijt waar de spinnewielen zich bevinden. Gebruik send() om het aantal pond geschoren wol van elk schaap in hun respectievelijke kleur in de generator in te voeren.
Bijvoorbeeld, als je bij het scheren van het schaap in het "green" tapijt 4 pond wol scheert, ga je naar het "green" tapijt bij de spinnewielen en stuur je die gegevens naar de generator, zoals dit:
next(spindle) spindle.send(4)
Doe dit voor alle vier (4) donkere X gemarkeerde plekken op de gekleurde tapijten om het niveau af te maken.