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

Moduły Matematyczne
Moduł Operatora

Cel

Zweryfikuj i przypisz zamówienia na materiały budowlane dla nowych terenów uprawnych, korzystając z modułu operatora.

Na piętrze aneksu znajdują się biura, w których przechowywane są rejestry inwentarza oraz zamówienia na materiały budowlane niezbędne do zagospodarowania nowego terenu. Istnieje wiele różnych narzędzi, które można wykorzystać do weryfikacji i obliczenia materiałów tak, aby mogły być użyte przy budowie; oprócz modułu matematyki i statystyki możemy użyć modułu operatora.

Ten moduł, import operator, może być użyty do uproszczenia obliczeń operatorów oraz wygodnego pakowania ich w funkcje. Możesz używać tych funkcji zarówno do optymalizacji, jak i do generowania wartości, bez konieczności tworzenia obiektu do przechowywania wyników obliczeń.

  • operators.eq(): Przyjmuje dwa argumenty i sprawdza, czy są one równe.
  • operators.lt(): Przyjmuje dwa argumenty, sprawdzając, czy pierwszy argument jest mniejszy od drugiego.
  • operators.gt(): Przyjmuje dwa argumenty, sprawdzając, czy pierwszy argument jest większy od drugiego.
  • operators.floordiv(): Przyjmuje dwa argumenty, dzieli pierwszy argument przez drugi i stosuje funkcję równoważną math.floor(), zaokrąglając wynik w dół.
  • operators.mod(): Przyjmuje dwa argumenty, zwraca resztę z dzielenia pierwszego przez drugi.
  • operators.contains(): Funkcja używana z listą, przyjmuje dwa argumenty – pierwszy to lista, a drugi to wartość, której obecność w liście chcesz sprawdzić. Zwraca: true lub false w zależności od tego, czy wartość jest obecna.
  • operators.concat(): Przyjmuje dwa argumenty typu lista, łączy obie listy za pomocą jednej przejrzystej funkcji, co może być szybsze niż inne metody.
  • operators.countOf(): Przyjmuje dwa argumenty: listę oraz wartość, której występowanie w liście ma zostać policzone. Zwraca liczbę wystąpień tej wartości.

Na początek, udaj się do ciemnego znaku X nad dywanami w kolorach czerwonym, niebieskim i zielonym. Istnieje sześć (6) stałych: red_order, blue_order, green_order, które reprezentują zamówienia na materiały, oraz: red_req, blue_req, green_req, które określają wymaganą ilość materiałów do budowy.

Przy ciemnym znaku X nad czerwonym dywanem użyj funkcji read(), aby sprawdzić wymaganą ilość materiałów. Utwórz zmienną o nazwie red_verification i użyj funkcji operator.eq() wraz ze stałymi red_order i red_req, w następujący sposób: red_verification = operator.eq(red_order,red_req). Następnie, używając wcześniej zdefiniowanej funkcji write(), wyświetl wynik zawarty w red_verification.

Przy znakach X nad niebieskim i zielonym dywanem powtórz ten sam proces – użyj funkcji read() i utwórz zmienne: blue_verification oraz green_verification. Dla zmiennej niebieskiej zapisz wartość zwróconą przez operator.lt() z wykorzystaniem stałych blue_order i blue_req, aby sprawdzić, czy zamówienie jest mniejsze od wymaganego. Dla zmiennej zielonej zapisz wartość zwróconą przez operator.gt() z wykorzystaniem stałych green_order i green_req, aby sprawdzić, czy zamówienie jest większe od wymaganego. Następnie użyj wcześniej zdefiniowanych funkcji write() do wyświetlenia odpowiednich wyników dla poszczególnych dywanów.

Następnie udaj się do jasnego znaku X i, korzystając z funkcji read() na biurku, sprawdź zamówienia, które zostały już złożone i są w drodze. W księdze zamówień znajdziesz wartości dwóch stałych: main_order oraz sub_order, a także informację, na ile sekcji należy podzielić materiały. Po zapoznaniu się z księgą zamówień, utwórz zmienną o nazwie allocations i zapisz w niej wynik funkcji operator.floordiv(), która dzieli wartość main_order przez liczbę sekcji opisaną w księdze, w następujący sposób: allocations = operator.floordiv(main_order, -add sections-). Operacja ta dzieli zamówienie i zaokrągla wynik w dół. Następnie, używając funkcji write(), wyświetl wynik przechowywany w zmiennej allocations.

Udaj się do złotego znaku X i utwórz zmienną o nazwie remainder. Przechowaj w niej wynik funkcji operator.mod(), obliczającej resztę z połączenia stałych main_order i sub_order, aby uzyskać resztę z obu zamówień. Na biurku użyj funkcji write() i przekaż zmienną remainder, aby przedstawić uzyskany wynik.

Udaj się do ciemnego znaku X nad fioletowym dywanem, gdzie zweryfikujemy, czy dostarczono narzędzia potrzebne do budowy. Posiadamy dwie stałe listy: delivery_1 i delivery_2; sprawdzimy, czy narzędzia zostały dostarczone w pierwszej przesyłce. Utwórz zmienną o nazwie tools i przypisz do niej wynik funkcji operator.contains(), podając jako pierwszy argument listę delivery_1, a jako drugi ciąg znaków “tools”. Sprawdzi to, czy narzędzia znajdują się w przesyłce, w następujący sposób: tools = operator.contains(delivery_1,"tools"). Po wykonaniu tej operacji, na biurku użyj funkcji write() i przekaż zmienną tools, aby zanotować, czy narzędzia zostały pomyślnie dostarczone.

Następnie sprawdź wszystkie przesyłki, udając się do ciemnego znaku X nad białym dywanem i utwórz listę o nazwie materials. Użyj jej do zapisania wyniku funkcji operator.concat(), przekazując jako argumenty listy delivery_1 oraz delivery_2. Operacja ta szybko łączy obie listy w jedną. Na biurku użyj funkcji write() i przekaż zmienną materials, aby zanotować wszystkie materiały, które zostały już dostarczone na budowę.

Na koniec udaj się do ciemnego znaku X nad pomarańczowym dywanem, gdzie znajdują się warunki wstępne rozpoczęcia budowy; jedną z głównych informacji jest ilość drewna (w tonach) potrzebna na początek. Sprawdź, ile drewna dostarczono w całej przesyłce i ogłoś wynik, używając funkcji speak() wraz z funkcją operator.countOf(). Jako pierwszy argument przekaż utworzoną listę materials, a jako drugi ciąg znaków “wood”. Funkcja ta zwróci liczbę wystąpień drewna w liście materials. To ilustruje, jak funkcje operatora mogą być używane samodzielnie, bez potrzeby tworzenia obiektu do przechowywania wartości, w następujący sposób: player.speak(operator.countOf(materials,"wood")). To zakończy poziom.

Księga Kodów