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

Продвинутые классы
Перегрузка операторов

Цель

Подсчитайте, сколько вина проходит осветление, используя векторы и перегрузку операторов.

После того, как вино было отжато, его необходимо профильтровать и осветлить, существует несколько бочек для фильтрации, и весь объём нужно промыть. Важно подсчитать, сколько вина производится, чтобы запечатать и выдержать бочки.

Чтобы сделать это, вам нужно создать векторы и сложить их вместе, они похожи на списки, но не так гибки, зато более эффективны по памяти. Обычно их используют для работы с координатами, в данном случае мы будем использовать их как переменные, которые хранят более одного значения. Сложение векторов выполняется с помощью перегрузки операторов, которая расширяет функциональность объектов класса, позволяя применять к ним операторы так, как к обычным значениям.

Для начала пройдите и соберите металлические водяные канистры, расположенные в верхней части комнаты, они будут использоваться для промывки вина, фильтруемого в бочках. После сбора пройдите к темной метке X на красном ковре, повернитесь к бочке и начните векторизировать содержимое каждой бочки.

Метки X расположены группами по три (3) для каждого цветного ковра: золотая метка X, светлая метка X и темная метка X. На всех темных и светлых метках X используйте функцию water() для промывки бочек. Также на всех темных и светлых метках X используйте функцию read() для определения количества вина, которое обрабатывается в этой колонке бочек. На золотой метке X используйте функцию write(), чтобы зафиксировать итоговую сумму значений.

В редакторе кода есть класс с именем vector, который используется не только для создания вектора, но и для их сложения. Создавайте объекты vector для хранения данных, полученных на светлых и темных метках X. Например, на красном ковре фильтруется красное вино:

# Create object using data from dark X mark red_wine_dark = vector(345, 272) # Create object using data from light X mark red_wine_light = vector(248, 432) # Add together vectors for totals red_wine_total = red_wine_dark + red_wine_light

В векторе первая позиция называется x, а вторая позиция — y. Формат записи выглядит следующим образом: object_name = vector(x,y). Это важно для заполнения векторов информацией, полученной с помощью функции read().

На золотых метках X используйте функцию write(), чтобы записать итоговое значение для каждого набора векторов. Например, для X на красном ковре это выглядит так:

await player.write( "There is a total of %s pounds on the left barrels and %s pounds on the right barrels" % (red_wine_total.x, red_wine_total.y)

Не забудьте добавить .x и .y в конце итогового значения, чтобы указать значения каждого вектора.

Для каждого набора цветных ковров используется разный вид вина для фильтрации. На вышеупомянутом красном ковре фильтруется red_wine; на желтых коврах — sparkling_wine; на зеленых коврах — white_wine; а на оранжевых коврах — фильтруется orange_wine.

После того, как все светлые и темные метки X будут обработаны с помощью функции water(), и все золотые метки X будут иметь записанные итоговые суммы, уровень будет пройден.

Книга Кода