Coding for KidsCoding for Kids
Poziomy KreatywneWyzwaniaPrzewodnik dla Nauczycieli
Głosuj na funkcje
Zaawansowany kurs programowania w Pythonie
Rozdział
>
Poziom

Generatory
Wysyłanie danych do generatora

Cel

Zbierz wełnę i prządź ją w przędzę za pomocą wrzecion poprzez przesyłanie danych do generatora.

Niektóre owce stały się nieco zbyt wełniste, najlepiej byłoby je ostrzyc i zebrać wełnę. Następnie można przepuścić wełnę przez wrzeciono, aby uzyskać przędzę. Aby to osiągnąć, potrzebujemy użyć generatora, jako że ilości przetworzonej przędzy i wełny mogą się znacznie różnić.

Najpierw zdefiniuj generator zdolny do przędzenia, nazwij go spin(), generator ten musi być skonfigurowany do użycia danych wejściowych, aby działać. Czyta dane z yield i umieszcza je w zmiennej, następnie modyfikuje jej zawartość, zwiększając jej długość z każdym cyklem, ostatecznie produkując wynik.

def spin(): cycle = 1 while True: cycle += 1 yarn = yield yarn = yarn * cycle yield player.speak("You've spun %d ft of yarn" % (yarn))

Ponieważ jest to generator, instrukcję while() wewnątrz można zatrzymać i zmodyfikować, aby uzyskać pożądane wyjście, taki poziom kontroli znajduje się w sercu tego, czym jest generator i jak może być przydatny podczas przetwarzania danych. Aby wprowadzić dane do generatora, zdefiniuj go i użyj funkcji send(), aby przekazać mu dowolne dane, na przykład:

spindle = spin() # Utwórz instancję generatora next(spindle) # Uruchom generator o krok spindle.send(6) # Wstaw dane do generatora # W tym przypadku przesyłasz mu liczbę 6

Przejdź do miejsca oznaczonego lampami X przy kolorowych dywanach i spójrz na owce. Istnieje stała słownikowa o nazwie sheep, która zawiera wartość, ile wełny można ostrzyc z każdej owcy. Użyj funkcji speak() ze słownikiem i kolorem dywanu, na którym stoisz, aby ostrzyc wełnę owcy i sprawdzić, ile zebrałeś. Przykład: player.speak(sheep["green"]) .

Istnieją cztery (4) kolorowe dywany w sumie: "green", "red", "blue" i "orange". Kiedy już ostrzyżesz owce, przejdź do ciemnych znaków X przy każdym kolorowym dywanie, gdzie znajdują się wrzeciona. Użyj send() aby wprowadzić liczbę funtów wełny ostrzyżonej z każdej owcy w ich odpowiednim kolorze do generatora.

Na przykład, jeśli podczas strzyżenia owcy na zielonym dywanie ostrzyżesz 4 funty wełny, idź do zielonego dywanu przy wrzecionach i przekaż te dane do generatora, w ten sposób:

next(spindle) spindle.send(4)

Zrób to dla wszystkich czterech (4) ciemnych znaków X na kolorowych dywanach, aby ukończyć poziom.

Księga Kodów