Поглиблений курс розробки на Python
Розділ
>
Рівень
Просунуті функції
Часткові функції
Мета
Упакуйте та розмістіть будівельні матеріали, які були доставлені до доку, використовуючи часткові функції.
Деякі матеріали щойно були доставлені до доку, їх потрібно упакувати і зберегти, щоб потім їх можна було використовувати як будівельні матеріали. Матеріали необхідно загорнути в тканину та зв'язати ниткою. Важливо зважити всі предмети під час пакування, щоб їх можна було ефективно транспортувати пізніше. Для спрощення цього процесу ми можемо оптимізувати його, використовуючи Partial Functions.
Partial Function – це користувацька функція, яка скорочується за рахунок того, що не потребує додавання значень аргументів, які майже завжди однакові. Це дозволяє вам використовувати функції, що приймають декілька аргументів, та викликати їх, передаючи лише один аргумент або стільки, скільки ви оберете.
from functools import partial
Для початку необхідно імпортувати partial з модуля, відомого як functools, це дозволить вам створювати Partial Functions. Імпортування коду завжди відбувається на початку редактора коду.
Налаштуйте функцію з ім'ям weight, яка прийматиме три (3) аргументи: thread, cloth та material. Ця функція дозволить вам обчислити вагу упакованих матеріалів, і ми можемо ще більше оптимізувати цей процес, пропускаючи його через часткову функцію.
def weight(thread, cloth, material):
return 2 * thread + 5 * cloth + material * 10
package = partial(weight, 4, 2)
Створіть Partial Function з іменем package, процес налаштування якого подібний до lambda-функцій. Використовуйте partial() для заповнення функції та додайте ім'я функції, а також фіксовані значення для аргументів, які ви хочете встановити.
Усі аргументи оригінальної функції, які ви не призначите, стануть аргументами, що повинні бути передані через Partial Function. У випадку Partial Function package(), це аргумент material.
Пройдіть до темних позначок X перед ящиками, щоб забрати пакувальні матеріали. На жовтому килимовому X використовуйте функцію collect(), щоб отримати "thread", а потім перейдіть до фіолетового килимового X і використовуйте функцію collect(), щоб отримати "cloth". Ці елементи будуть використані для пакування матеріалів.
Перейдіть через док і заберіть усі будівельні матеріали, зокрема: bricks, planks, red_bricks та wood. Після збирання додайте кількість зібраних одиниць кожного матеріалу до змінної з ім'ям цього матеріалу, наприклад: bricks = 3.
Потім перейдіть до світлих позначок X перед ящиками та обчисліть вагу кожного будівельного матеріалу перед його зберіганням. Використовуйте функцію speak() разом з Partial Function package(), щоб обчислити вагу. Використовуйте змінні матеріалів як аргументи для функції package(), наприклад:
player.speak("Package weighs %s pounds" % package(bricks)) player.place(package(bricks))
Після цього використовуйте функцію place(), щоб зберегти матеріал всередині ящиків, роблячи це за допомогою функції package(), як у наведеному вище прикладі.
На світлій позначці X з "red" килимом зважуйте та зберігайте bricks. На світлій позначці X з "blue" килимом зважуйте та зберігайте planks. На світлій позначці X з "orange" килимом зважуйте та зберігайте red_bricks. На світлій позначці X з "green" килимом зважуйте та зберігайте wood. Зважте та збережіть усі чотири (4) матеріали у відповідних ящиках, щоб завершити рівень.