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

Generatory
Ręczne uruchamianie generatora

Cel

Użyj generatora w ręcznej sekwencji, aby zebrać i przygotować materiały do pieczenia chleba.

Naprzód znajduje się obiekt, w którym możesz przygotować ciasto na chleb, używając pras. Zwykle używałbyś funkcji combine(), aby połączyć materiały, ale w tym przypadku tak nie jest, materiały muszą zostać najpierw przetworzone, zanim będą mogły zostać połączone.

Do tego zadania możemy użyć generatorów, ponieważ można je dostosować do generowania różnych typów plików, a także mają możliwość wywoływania sekwencji na żądanie, a nie automatycznego działania jak funkcje i pętle. Oto przykład:

def bread(): yield 5 yield "grain"

Powyższy kod zawiera generator z dwoma instrukcjami yield, z których każda produkuje liczbę rzeczywistą i ciąg znaków. Możemy uzyskać wartości generatora w dowolnym momencie, używając funkcji next(). Na przykład:

recipe = bread() # Ustaw Generator player.place(next(recipe)) # Wywołana pierwsza wartość player.collect(next(recipe)) # Wywołana druga wartość

W powyższym przykładzie generator jest ustawiony, a funkcja next() używana jest z generatorem, aby wywołać pierwszą wartość yield do użycia w funkcji place(). Czynność ta jest powtarzana dla drugiej wartości, ale używana jest zamiast tego w funkcji collect(). Ułatwia to wywoływanie wartości różnych typów w sekwencji, bez konieczności używania wielu list lub zmiennych.

Generator o nazwie bread() zostanie zdefiniowany w edytorze kodu, ale będzie wymagał liczbowych wartości dla każdego składnika, abyś mógł przetworzyć ciasto chlebowe. Te liczby są zapisane na tabliczce obok obiektu. Ustaw generator do używania, odwołując się do niego w ten sposób: recipe = bread()

Najpierw podejdź do oznaczenia X obok zbiornika z mlekiem i collect() ostatnią porcję mleka w zbiorniku, używając funkcji generatora next(), w ten sposób: player.collect(next(recipe)). Następnie podejdź do oznaczenia złotego X obok tabliczki i użyj funkcji speak(), aby zdobyć liczby potrzebne generatorowi do produkcji chleba i zapisz je w generatorze. Dane są przechowywane w stałej nazwanej "sign" i można je wywołać w ten sposób: player.speak(sign).

Gdy wszystkie wartości zostaną wprowadzone do generatora, wejdź do obiektu i użyj player.place(next(recipe)) na ciemnych oznaczeniach X i player.collect(next(recipe)) na jasnych oznaczeniach X, aby ukończyć poziom.

Księga Kodów