Поглиблений курс розробки на 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". Їх потрібно зберігати в контейнері біля green carpet. Код записується таким чином: pack_singles("jars", "white", "purple", "red", "brown")
Для "eggs" є три (3) різновиди, які ти збираєш і вводиш як аргументи, а саме: "white", "green" та "blue". Їх потрібно зберігати в контейнері біля orange carpet. Використовується той самий формат, що і в попередньому прикладі.
Потім перейдіть до світлих позначок X та використовуйте функцію pack_multi для упаковки "berries" та "fruit". Для "berries" є три (3) різновиди, які ти збираєш і вводиш як аргументи, а саме: "red", "blue" та "purple". Їх потрібно зберігати в контейнері біля blue carpet. При цьому необхідно додати кількості зібраних одиниць для кожного, ось так: pack_multi("berries", red = 3 , blue = 2 , purple = 4 )
Для "fruit" є чотири (4) різновиди, які ти збираєш і вводиш як аргументи, а саме: "apple", "pear", "orange" та "peach". Їх потрібно зберігати в контейнері біля red carpet. Використовується той самий формат, що і в попередньому прикладі, переконайся, що всі предмети зібрані та упаковані для завершення рівня.