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

Zaawansowane funkcje
Zamknięcia

Cel

Reguluj dopływ wody na farmie poprzez ustawienie i korzystanie z domknięć.

Istnieją cztery zbiorniki wodne zaprojektowane do nawadniania otaczających pól, najwyższy czas, aby je przestawić, zapewniając, że odpowiednia ilość wody trafia we właściwe miejsca. Aby to zrobić, możemy znacznie ułatwić zadanie, korzystając z domknięć.

Domknięcia to funkcje zagnieżdżone zaprojektowane do enkapsulacji danych, co zmniejsza liczbę zmiennych, które trzeba użyć, oraz ukrywa dane wewnątrz funkcji, uniemożliwiając ich manipulację z zewnątrz, czyli zamykając funkcję.

Aby regulować wodę w zbiornikach, stworzymy funkcję zagnieżdżoną, która działa jak mnożnik. Funkcja ta działa w taki sam sposób jak pętla – funkcja zewnętrzna o nazwie multiplier_of() przyjmuje argument, który jest mnożony przez argument jej wewnętrznej funkcji o nazwie multiplier().

# Nested Function def multiplier_of(n): def multiplier(number): return number*n return multiplier

Po skonfigurowaniu musimy zamknąć funkcję, tworząc domknięcia, co zapobiega dostępowi do ich wartości i utwierdza ich zastosowanie.

# Set up Closure that multiplies any number by 2 multiply_by_2 = multiplier_of(2) # Uses closure to display a number on screen player.speak( multiply_by_2(4) ) # The number displayed is 8, the formula is [2 x 4 = 8]

Powyższe domknięcie nosi nazwę multiply_by_2() i wykorzystuje funkcję zagnieżdżoną, którą stworzyliśmy z ustalonym argumentem, którym jest 2. W rezultacie dowolna liczba podana jako argument zostanie pomnożona przez dwa (2) i ta właściwość nie może zostać zmieniona, ponieważ jest zamknięta.

Przechodząc do regulacji zbiorników wodnych, ustaw trzy (3) domknięcia: multiply_by_2, multiply_by_3 oraz multiply_by_5. Ustaw je ręcznie, korzystając z tego samego formatu, który został przedstawiony w poprzednim przykładzie, w następujący sposób: multiply_by_2 = multiplier_of(2).

Na tym poziomie znajduje się stała słownikowa o nazwie tanks, która jako indeks zawiera sześć (6) kolorów: "red", "blue", "orange", "purple", "yellow" oraz "green". Każdy indeks przechowuje liczbę reprezentującą, ile wody przepływa przez flankę zbiornika; ta liczba zostanie użyta do regulacji zbiornika przy użyciu wcześniej omówionych domknięć "multiply_by".

Aby to ułatwić, w edytorze zostanie utworzona funkcja o nazwie regulate_water(), która przyjmuje dwa argumenty: kolor, reprezentujący indeksy opisane powyżej, oraz mnożnik, reprezentujący używane domknięcie mnożnika. Przykładem użycia funkcji jest: regulate_water("red", multiply_by_2).

Przejdź do ciemnych znaków X nad kolorowymi dywanikami i staw czoła zbiornikom, używając funkcji regulate_water(). Ustaw kolor dywanu jako pierwszy argument oraz odpowiednie domknięcie mnożnika jako drugi. Mnożniki do użycia dla poszczególnych kolorowych dywaników są następujące:

multiply_by_2 - "red" and "green" multiply_by_3 - "blue" and "purple" multiply_by_5 - "orange" and "yellow"

Reguluj wodę na każdej flance zbiornika, aby ukończyć poziom.

Księga Kodów