Поглиблений курс розробки на Python
Розділ
>
Рівень
Розширені функції
Поліморфні функції
У цьому розділі ми розглянемо нові типи функцій, їх різноманітне використання та як максимально ефективно застосовувати їх при програмуванні на Python.
На цьому рівні ми починаємо з поліморфних функцій, які можуть працювати з різними типами даних. Це схоже на використання однієї функції для виконання різних завдань, універсальної функції.

Мета
Перевірити стан культур та поросят, а також підтвердити постачання сировини з використанням поліморфних функцій.
Дуже скоро з'являться культури, які потрібно буде зібрати, щоб їх відвантажити для продажу. Поросятам також потрібно доставити корм, тому було б доцільно з'ясувати, скільки корму потрібно замовити. Для виконання цих завдань ви можете використати поліморфні функції, у цьому випадку ми використовуватимемо функцію len().
Поліморфні функції — це функції, які можуть використовуватися з різними типами даних. Наприклад, функція len() використовується для обчислення довжини об’єктів, ці об’єкти можуть бути різних типів, таких як списки, словники та навіть рядки. Почніть з підрахунку кількості нижчих позначок X на полі, перш ніж перейти до вищих позначок X у сараї.
У загоні біля дороги є декілька поросят, їх імена: "Peggle", "Peter", "Piper", "Pedro". Розмістіть їх імена у список, щоб ви могли їх підрахувати. Наприклад: piglets = ["Peggle", "Peter", "Piper", "Pedro"]. Створіть змінну з ім’ям number, щоб зберегти довжину списку, використовуючи функцію len(), ось так: number = len(piglets).
Після того як ви створили список і змінну, пройдіться до темної позначки X перед загоном поросят, оберніться до загону та використайте функцію speak для підрахунку поросят за допомогою функції speak(). Використовуйте змінну number для отримання результату, ось так: player.speak("There are d% Piglets" % (number) )
Після того як ви перевірили поросят, пройдіться до світлої позначки X біля поля, оберніться до культур та підрахуйте їх. Існує три (3) різні види культур: "Tomatoes", "Pumpkins", "Eggplant". Порахуйте, скільки культур вирощується кожного виду, і збережіть їх у словнику, ось так:
crops = {} crops["Tomato"] = number of tomato crops crops["Pumpkin"] = number of Pumpkin crops crops["Eggplant"] = number of Eggplant crops
Після того як ви заповните словник правильними значеннями, використайте функцію speak() у поєднанні з функцією len() для підрахунку кількості доступних культур, ось так: player.speak("There are d% types of crops" % ( len(crops) ) ).
Після того як ви підрахували як поросят, так і культури, пройдіться до темної позначки X на фіолетовому килимку, щоб перевірити замовлення на відвантаження культур. Існує константна змінна з ім'ям order, яка містить рядок із замовленнями на відправку культур. Нам потрібно з’ясувати, які замовлення, і скільки їх, ми можемо зробити це за допомогою функції speak() та розпаковування рядка, а також використання функції len().
player.speak( [*order] ) player.speak("There are d% orders of crops going out" % ( len(order) ) )
Розміщуючи рядкову змінну в середині дужок та додаючи *, ми активуємо оператор розпаковування рядка, наприклад: [*string]. Це призводить до того, що рядок розбивається на окремі символи, які потім зберігаються у список, наприклад: [*string] поверне список ['s', 't', 'r', 'i', 'n', 'g']. У випадку використання len() для рядка, він підрахує, скільки символів міститься в рядку.
Щоб завершити вправу, пройдіться до золотої позначки X з правого боку сараю, і визначте, скільки фунтів корму потрібно доставити для поросят. Створіть змінну з ім’ям food, як значення використайте змінну number, яку ви створили раніше, і помножте її на 35, щоб визначити кількість фунтів, ось так: food = number * 35.
Стоячи перед сараєм, використайте функцію speak() у поєднанні з змінною food, щоб визначити кількість доставленого корму, ось так: player.speak("There are d% pounds of food coming in" % (food) ).