Curs Avansat de Dezvoltare Python
Capitolul
>
Nivel
Funcții avansate
Funcții polimorfice
În acest capitol vom explora noi tipuri de funcții, diverse moduri de utilizare a acestora și cum să le folosim la maximum atunci când programăm în Python.
În acest nivel începem cu funcțiile polimorfice, adică funcții care pot fi folosite cu o varietate de tipuri diferite de date. Este ca și cum ai folosi aceeași funcție pentru a face lucruri diferite, o funcție universală.

Obiectiv
Verifică starea culturilor și a purceilor și confirmă expedierea aprovizionărilor folosind funcții polimorfe.
Foarte curând ar trebui să existe niște culturi care trebuie recoltate pentru a putea fi expediate spre vânzare. De asemenea, purceii trebuie să primească hrană, așa că ar fi o idee bună să verifici câtă mâncare trebuie comandată. Pentru a îndeplini aceste sarcini poți folosi funcții polimorfe; în acest caz vom folosi funcția len().
Funcțiile polimorfe sunt funcții care pot fi folosite cu mai multe tipuri diferite de date. De exemplu, funcția len() este folosită pentru a calcula lungimea obiectelor; aceste obiecte pot fi de diferite tipuri, cum ar fi liste, dicționare și chiar șiruri de caractere. Începe prin a înregistra numărătoarea la marcajele X inferioare din câmp, înainte de a trece la marcajele X superioare din șopron.
Există mai mulți purcei într-un coteț lângă drum, iar numele lor sunt "Peggle", "Peter", "Piper", "Pedro". Pune-le numele într-o listă pentru a-i putea număra. Așa:
piglets = ["Peggle", "Peter", "Piper", "Pedro"]
Creează o variabilă numită number pentru a stoca lungimea listei folosind funcția len(), astfel: number = len(piglets).
După ce ai configurat lista și variabila, mergi la semnul X întunecat din fața cotețului cu purcei, îndreaptă-te către coteț și folosește funcția speak() pentru a-i număra, folosind variabila number pentru a obține rezultatul, astfel: player.speak("There are d% Piglets" % (number) )
După ce ai verificat purceii, mergi la semnul X luminos din câmp, îndreaptă-te către culturi și numără-le. Există trei (3) tipuri diferite de culturi: "Tomatoes", "Pumpkins", "Eggplant". Numără câte culturi se cultivă din fiecare și stochează-le într-un dicționar, astfel:
crops = {} crops["Tomato"] = number of tomato crops crops["Pumpkin"] = number of Pumpkin crops crops["Eggplant"] = number of Eggplant crops
După ce ai completat dicționarul cu valorile corecte, folosește funcția speak() împreună cu funcția len() pentru a număra numărul de tipuri de culturi disponibile, astfel: player.speak("There are d% types of crops" % ( len(crops) ) ).
După ce ai numărat atât purceii, cât și culturile, mergi la semnul X întunecat de pe covorașul violet pentru a verifica comenzile pentru culturile care trebuie expediate. Există o constantă variabilă numită order care conține un șir cu comenzile pentru culturile care urmează să fie expediate. Trebuie să aflăm care sunt comenzile și câte comenzi avem; putem face acest lucru folosind funcția speak() și despachetând șirul, precum și utilizând funcția len().
player.speak( [*order] ) player.speak("There are d% orders of crops going out" % ( len(order) ) )
Introducând variabila de tip șir în paranteze și un * activăm un operator pentru a despacheta șirul; de exemplu: [*string]. Aceasta înseamnă că se ia un șir și se separă fiecare caracter individual, punându-le într-o listă, de exemplu: [*string] va afișa o listă ['s', 't', 'r', 'i', 'n', 'g']. În cazul utilizării funcției len() pe un șir, aceasta va număra câte caractere conține șirul.
Pentru a încheia exercițiul, mergi la semnul X auriu de pe partea dreaptă a șopronului și determină câte livre de mâncare trebuie livrate pentru purcei. Creează o variabilă numită food; ca valoare, folosește variabila number pe care ai creat-o anterior și înmulțește-o cu 35 pentru a determina numărul de livre, astfel: food = number * 35.
În timp ce te îndrepți spre șopron, folosește funcția speak() împreună cu variabila food pentru a determina cantitatea de mâncare ce urmează să fie livrată, astfel: player.speak("There are d% pounds of food coming in" % (food) ).