Coding for KidsCoding for Kids
Креативни НиваПредизвикателстваРъководство за Учители
Гласувайте за функции
Курс по усъвършенствано разработване с Python
Глава
>
Ниво

Разширени функции
Функции с променлив брой аргументи

Цел

Вземете всички консумиращи артикули в склада и ги опаковайте в складови контейнери, използвайки функции с променлив брой аргументи.

Има няколко хранителни продукта, разположени в склада, които трябва да бъдат опаковани, за да бъдат изпратени за продажба. За да направите това ефективно, можете да създадете персонализирани функции с променлив брой аргументи. Това са функции, които нямат фиксиран брой аргументи и ви позволяват да зададете толкова аргументи, колкото са необходими за изпълнение на действията на функцията.

Има два (2) начина да добавите променлив брой аргументи към функция, в зависимост от това какво се опитвате да постигнете. Първият метод е да се създаде списък с аргументи – вместо да поставяте различни имена на аргументи, поставете звездичка пред един аргумент. Това автоматично създава списък.

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")

Вторият метод е да поставите аргументите в речник, вместо в списък. Това се прави по същия начин, както при предишния метод, но вместо една звездичка, поставяте две. Това автоматично създава речник, вместо списък.

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}

За да опаковате всички артикули за изпращане, създайте два комплекта от персонализирани функции – едни за опаковане на единични артикули и други за опаковане на множество артикули заедно. Използвайте променливите аргументи, за да пакетирате различни артикули заедно, без да е необходимо да създавате твърде много функции.

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)

Има четири (4) различни вида артикули на терена: "jars", "eggs", "berries" и "fruit". Съберете всички артикули в склада и се придвижете към X символите по маршрута за изпращане. Насочете се към тъмните X символи и използвайте функциите pack_singles за опаковане на "jars" и "eggs".

За "jars" има четири (4) вида, които събирате и подавате като аргументи, а именно "white", "purple", "red" и "brown". Те трябва да бъдат съхранени в контейнера до зеления килим. Кодът се пише по следния начин: pack_singles("jars", "white", "purple", "red", "brown")

За "eggs" има три (3) вида, които събирате и подавате като аргументи, а именно "white", "green" и "blue". Те трябва да бъдат съхранени в контейнера до оранжевия килим. Използвайте същия формат, както при предишната настройка.

След това се придвижете към светлите X символи и използвайте функцията pack_multi, за да опаковате "berries" и "fruit". За "berries" има три (3) вида, които събирате и подавате като аргументи, а именно "red", "blue" и "purple". Те трябва да бъдат съхранени в контейнера до синия килим. Трябва да добавите количествата, които събирате за всеки от тях, по следния начин: pack_multi("berries", red = 3 , blue = 2 , purple = 4 )

За "fruit" има четири (4) вида, които събирате и подавате като аргументи, а именно "apple", "pear", "orange" и "peach". Те трябва да бъдат съхранени в контейнера до червения килим. Използвайте същия формат, както в предишния пример. Уверете се, че всички артикули са събрани и съхранени, за да завършите нивото.

Книга с Код