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

Zaawansowane funkcje
Funkcje częściowe

Cel

Zapakuj i umieść materiały budowlane, które zostały dostarczone do doku, korzystając z funkcji częściowych.

Niektóre zapasy właśnie zostały dostarczone do doku, należy je zapakować i przechować, aby mogły być użyte jako materiały budowlane. Materiały należy owinąć w tkaninę i związać nicią. Ważne jest, aby zważyć wszystkie przedmioty podczas pakowania, aby później mogły być skutecznie przetransportowane. Aby ułatwić ten proces, możemy go zoptymalizować, korzystając z Funkcji Częściowych.

Funkcja Częściowa to funkcja niestandardowa, która jest skrócona poprzez pominięcie wartości argumentów, które są w dużej mierze stałe. Pozwala to na korzystanie z funkcji przyjmujących wiele argumentów i wykonywanie ich z tylko jednym argumentem lub dowolną liczbą argumentów, jaką wybierzesz.

from functools import partial

Aby rozpocząć, musisz zaimportować partial z modułu znanego jako functools, co umożliwi ci tworzenie Funkcji Częściowych. Importowanie kodu zawsze odbywa się na początku edytora kodu.

Utwórz funkcję o nazwie weight i spraw, aby przyjmowała trzy (3) argumenty: thread, cloth oraz material. Ta funkcja pozwoli ci obliczyć wagę zapakowanych materiałów, a proces ten możemy dodatkowo zoptymalizować, przekierowując go przez funkcję częściową.

def weight(thread, cloth, material): return 2 * thread + 5 * cloth + material * 10 package = partial(weight, 4, 2)

Utwórz Funkcję Częściową o nazwie package, która jest ustawiana w sposób podobny do funkcji lambda. Użyj partial() do utworzenia funkcji i podaj nazwę funkcji oraz stałe wartości dla argumentów, które chciałbyś przypisać.

Wszystkie argumenty z oryginalnej funkcji, których nie przypiszesz, staną się argumentami, które muszą zostać przekazane do Funkcji Częściowej. W przypadku funkcji częściowej package(), będzie to argument material.

Przejdź do ciemnych znaków X przed skrzyniami, aby zdobyć materiały do pakowania. Na żółtym dywanie oznaczonym X, użyj funkcji collect() do zdobycia "thread", a następnie udaj się do fioletowego dywanu oznaczonego X i użyj funkcji collect() do zdobycia "cloth". Te przedmioty zostaną wykorzystane do pakowania materiałów.

Przejdź przez dok i zbierz wszystkie materiały budowlane, czyli: bricks, planks, red_bricks oraz wood. Po ich zebraniu, dodaj liczbę zebranych jednostek każdego materiału do zmiennej nazwanej tak samo jak materiał, na przykład: bricks = 3.

Następnie udaj się do jasnych znaków X przed skrzyniami i oblicz wagę każdego materiału budowlanego przed jego przechowaniem. Użyj funkcji speak() w połączeniu z funkcją częściową package(), aby obliczyć wagę. Użyj zmiennych materiałowych jako argumentów dla funkcji package(), na przykład:

player.speak("Package weighs %s pounds" % package(bricks)) player.place(package(bricks))

Uzupełnij to, używając funkcji place(), aby umieścić materiał w skrzyniach, również korzystając z funkcji package(), jak w powyższym przykładzie.

Na jasnym znaku X z dywanem w kolorze red zważ i przechowaj bricks. Na jasnym znaku X z dywanem w kolorze blue zważ i przechowaj planks. Na jasnym znaku X z dywanem w kolorze orange zważ i przechowaj red_bricks. Na jasnym znaku X z dywanem w kolorze green zważ i przechowaj wood. Przechowaj i zważ wszystkie cztery (4) materiały w odpowiednich skrzyniach, aby ukończyć poziom.

Księga Kodów