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

Zaawansowane klasy
Przeciążanie operatorów

Cel

Podsumuj, ile wina jest klarowane za pomocą wektorów i przeciążania operatorów.

Po tym, jak wino zostało wyciśnięte, musi zostać przefiltrowane i oczyszczone. Kilka beczek jest filtrowanych, a cała partia musi zostać przepłukana. Ważne jest, aby podsumować, ile wina jest produkowane, tak aby beczki mogły zostać uszczelnione i poddane dojrzewaniu.

Aby to zrobić, musisz stworzyć wektory i dodać je do siebie. Są one podobne do list, ale nie są tak elastyczne, a jednocześnie są bardziej efektywne pod względem pamięci. Zazwyczaj używa się ich do obsługi współrzędnych, w tym przypadku będziemy ich używać jak zmienne przechowujące więcej niż jedną wartość. Dodawanie wektorów odbywa się za pomocą przeciążania operatorów, co rozszerza funkcjonalność obiektów klas, umożliwiając używanie operatorów jak dla zwykłych wartości.

Na początek idź i zbierz metalowe puszki na wodę znajdujące się na szczycie sali; zostaną one użyte do przepłukania wina filtrowanego w beczkach. Po ich zebraniu udaj się do ciemnego X na czerwonym dywanie, stój naprzeciw beczki i zacznij wektoryzować zawartość każdej beczki.

Znaki X są rozmieszczone w zestawach po trzy (3) dla każdego kolorowego dywanu: złoty znak X, jasny znak X oraz ciemny znak X. Na wszystkich ciemnych i jasnych znakach X używaj funkcji water() do przepłukiwania beczek. Również na wszystkich ciemnych i jasnych znakach X użyj funkcji read(), aby określić, ile wina jest przetwarzane w danej kolumnie beczek. Na złotym znaku X użyj funkcji write() do zanotowania łącznej sumy ilości.

W edytorze kodu znajduje się klasa o nazwie vector, która umożliwia nie tylko tworzenie wektora, ale również ich dodawanie. Twórz obiekty vector, aby przechowywać dane pobrane z jasnych i ciemnych znaków X, na przykład na czerwonych dywanach filtrowane jest czerwone wino:

# Create object using data from dark X mark red_wine_dark = vector(345, 272) # Create object using data from light X mark red_wine_light = vector(248, 432) # Add together vectors for totals red_wine_total = red_wine_dark + red_wine_light

W wektorze pierwsza pozycja nazywana jest x, a druga y, a wzór wygląda następująco: object_name = vector(x,y). Jest to istotne przy wypełnianiu wektorów informacjami pobranymi za pomocą funkcji read().

Na złotych znakach X używaj funkcji write(), aby zapisać łączną sumę dla każdego zestawu wektorów. Na przykład, w przypadku czerwonych dywanów, oznaczenie jest następujące:

await player.write( "There is a total of %s pounds on the left barrels and %s pounds on the right barrels" % (red_wine_total.x, red_wine_total.y)

Pamiętaj, aby na końcu wartości wektora dodać .x oraz .y, aby określić wartości poszczególnych elementów wektora.

Dla każdego zestawu kolorowych dywanów filtrowany jest inny rodzaj wina. Na wspomnianym wcześniej czerwonym dywanie filtrowane jest red_wine; na żółtych dywanach filtrowane jest sparkling_wine; na zielonych dywanach filtrowane jest white_wine; a na pomarańczowych dywanach filtrowane jest orange_wine.

Gdy wszystkie ciemne i jasne znaki X zostaną przepłukane funkcją water(), a wszystkie oznaczenia na złotych znakach X będą miały zapisane łączne sumy, ukończysz poziom.

Księga Kodów