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

Zaawansowane Funkcje
Funkcje z argumentami wariantowymi

Cel

Zbierz wszystkie artykuły spożywcze znajdujące się w magazynie i zapakuj je do pojemników przy użyciu funkcji z wariacyjną liczbą argumentów.

W magazynie znajduje się kilka produktów spożywczych, które muszą zostać zapakowane, aby mogły zostać wysłane do sprzedaży. Aby zrobić to efektywnie, możesz stworzyć niestandardowe funkcje z zmienną liczbą argumentów. Są to funkcje, które nie mają ustalonej liczby argumentów i pozwalają na przekazanie tylu argumentów, ile potrzebujesz do wykonania akcji funkcji.

Istnieją dwa (2) sposoby dodawania zmiennej liczby argumentów do funkcji, w zależności od tego, co chcesz osiągnąć. Pierwsza metoda polega na stworzeniu listy argumentów – zamiast podawać różne nazwy argumentów, umieść gwiazdkę przed pojedynczym argumentem. Automatycznie utworzy to listę.

def custom_function(message,*arguments): player.speak(message) return(arguments) value = custom_function("lalala","one","two","three") # The message "lalala" is printed on screen # Value now returns the list ("one","two","three")

Druga metoda polega na umieszczeniu argumentów w słowniku zamiast listy. Działa to analogicznie do poprzedniej metody, ale zamiast jednej gwiazdki używasz dwóch. Automatycznie utworzy to słownik zamiast listy.

def custom_function(message,**arguments): player.speak(message) return(arguments) value = custom_function("lalala", one = 1, two = 2, three = 3) # The message "lalala" is printed on screen # Value now returns the dictionary: # {'one': 1, 'three': 3, 'two': 2}

Aby zapakować wszystkie przedmioty do wysyłki, stwórz dwa zestawy niestandardowych funkcji: jedną do pakowania pojedynczych przedmiotów i drugą do pakowania wielu przedmiotów razem. Użyj zmiennych argumentów, aby spakować różne przedmioty razem, bez konieczności tworzenia zbyt wielu funkcji.

def pack_singles(name,*items): length = len(items) player.speak("There are %d types of %s, those being:" % (length, name) ) player.speak(items) player.place(items) def pack_multi(name,**items): length = len(items) player.speak("There are %d types of %s, those being:" % (length, name) ) player.speak(items) player.place(items)

W terenie znajduje się cztery (4) różne typy przedmiotów: "jars", "eggs", "berries" oraz "fruit". Zbierz wszystkie przedmioty z magazynu i podążaj w stronę znaków X na pasie wysyłkowym. Udaj się do ciemnych znaków X i użyj funkcji pack_singles, aby spakować "jars" oraz "eggs".

Dla "jars" zbierasz cztery (4) typy, które podajesz jako argumenty: "white", "purple", "red" oraz "brown". Mają one zostać przechowane w pojemniku przy zielonym dywanie. Kod powinien wyglądać następująco: pack_singles("jars", "white", "purple", "red", "brown")

Dla "eggs" zbierasz trzy (3) typy, które podajesz jako argumenty: "white", "green" oraz "blue". Mają one zostać przechowane w pojemniku przy pomarańczowym dywanie. Użyj tego samego formatu, co w poprzednim przypadku.

Następnie udaj się do jasnych znaków X i użyj funkcji pack_multi, aby spakować "berries" oraz "fruit". Dla "berries" zbierasz trzy (3) typy, które podajesz jako argumenty: "red", "blue" oraz "purple". Mają one zostać przechowane w pojemniku przy niebieskim dywanie. Musisz dodać ilości zebrane dla każdego z nich, w następujący sposób: pack_multi("berries", red = 3 , blue = 2 , purple = 4 )

Dla "fruit" zbierasz cztery (4) typy, które podajesz jako argumenty: "apple", "pear", "orange" oraz "peach". Mają one zostać przechowane w pojemniku przy czerwonym dywanie. Użyj tego samego formatu, co w poprzednim przypadku; upewnij się, że wszystkie przedmioty zostały zebrane i zapakowane, aby ukończyć poziom.

Księga Kodów