Курс по усъвършенствано разработване с Python
Глава
>
Ниво
Разширени функции
Полиморфни функции
В тази глава ще разгледаме нови типове функции, различни приложения за тях и как да извлечем максимума от тях при кодиране в Python.
В това ниво започваме с полиморфни функции, които могат да се използват с различни типове данни. Това е като използването на една и съща функция за различни неща - универсална функция.

Цел
Проверете състоянието на културите и прасенцата и потвърдете доставките, използвайки полиморфни функции.
Много скоро трябва да има някои култури, които да бъдат прибрани, за да могат да бъдат изпратени за продажба. Прасетата също трябва да получат доставена храна, така че ще бъде добра идея да разберете колко храна трябва да бъде поръчана. За да изпълните тези задачи, можете да използвате полиморфни функции, в този случай ще използваме функцията len().
Полиморфните функции са функции, които могат да се използват с няколко различни типа данни. Например, функцията len() се използва за изчисляване на дължината на обекти, като тези обекти могат да бъдат различни типове данни като списъци, речници и дори низове. Започнете с отброяване на броя на долните X марки в полето, преди да преминете към горните X марки в склада.
Има няколко прасенца в ограда до пътя, чиито имена са "Peggle", "Peter", "Piper", "Pedro". Поставете имената им в списък, за да можете да ги преброите. Така: piglets = ["Peggle", "Peter", "Piper", "Pedro"]. Създайте променлива с име number, за да съхраните дължината на списъка, използвайки функцията len(), както следва: number = len(piglets).
След като сте създали списъка и променливата, отидете до тъмната X маркировка пред оградата на прасенцата, обърнете се към оградата и използвайте функцията 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) ).