Coding for KidsCoding for Kids
Творческие УровниИспытанияРуководство для Учителей
Голосовать за функции
Продвинутый курс разработки на Python
Глава
>
Уровень

Расширенные функции
Частичные функции

Цель

Упакуйте и разместите строительные материалы, доставленные на причал, с использованием частичных функций.

Некоторые поставки только что были доставлены на док. Их нужно упаковать и сохранить, чтобы их потом можно было использовать в качестве строительных материалов. Материалы необходимо обернуть в ткань и связать ниткой. Важно взвесить все предметы во время упаковки, чтобы их можно было эффективно транспортировать позже. Чтобы упростить этот процесс, мы можем оптимизировать его с помощью Частичных Функций.

Частичная функция — это пользовательская функция, которая упрощается за счёт того, что не требуется задавать значения аргументов, которые остаются неизменными. Это позволяет использовать функции, принимающие несколько аргументов, и выполнять их с одним аргументом или с любым другим количеством, которое вы выберете.

from functools import partial

Для начала необходимо импортировать partial из модуля functools, это позволит вам создавать Частичные Функции. Операторы импорта всегда размещаются в верхней части редактора кода.

Создайте функцию с именем weight и задайте ей три (3) аргумента: thread, cloth и material. Эта функция позволит вам вычислить вес упакованных материалов; мы можем дополнительно оптимизировать этот процесс, передав его через частичную функцию.

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

Создайте Частичную Функцию с именем package, она настраивается аналогично лямбда-функциям. Используйте partial(), чтобы сформировать функцию, и укажите имя функции, а также фиксированные значения для аргументов, которые вы хотите задать.

Любые аргументы исходной функции, которым не присвоены значения, станут аргументами, которые необходимо будет передать Частичной Функции. В случае с Частичной Функцией package() это аргумент material.

Пройдите к тёмным X-отметкам перед ящиками, чтобы забрать упаковочные материалы. На X-отметке на жёлтом ковре используйте функцию collect(), чтобы получить "thread", затем пройдите к X-отметке на фиолетовом ковре и используйте функцию collect(), чтобы получить "cloth". Эти предметы будут использованы для упаковки материалов.

Перейдите через док и заберите все строительные материалы, а именно: bricks, planks, red_bricks и wood. Как только вы их соберёте, добавьте количество каждого материала в переменную, названную в честь материала, например: bricks = 3.

Затем пройдите к светлым X-отметкам перед ящиками и посчитайте вес каждого строительного материала перед его хранением. Используйте функцию speak() вместе с Частичной Функцией 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) материала в правильных ящиках, чтобы пройти уровень.

Книга Кода