HaladĂł Python FejlesztĆi Tanfolyam
Ebben a fejezetben Ășj tĂpusĂș fĂŒggvĂ©nyeket fogunk felfedezni, azok kĂŒlönbözĆ felhasznĂĄlĂĄsi mĂłdjait, Ă©s azt, hogyan hozhatjuk ki belĆlĂŒk a legtöbbet Python kĂłdolĂĄsa közben.
Ebben a szinten a polimorf fĂŒggvĂ©nyekkel kezdĂŒnk, melyek kĂŒlönfĂ©le adattĂpusokkal is hasznĂĄlhatĂłak. Ez olyan, mintha ugyanazt a fĂŒggvĂ©nyt kĂŒlönbözĆ dolgokra alkalmaznĂĄnk, egy egysĂ©ges, univerzĂĄlis fĂŒggvĂ©nyt.

CélkitƱzés
EllenĆrizd a termĂ©nyek Ă©s malacok ĂĄllapotĂĄt, Ă©s erĆsĂtsd meg a szĂĄllĂtmĂĄnyok rendelĂ©sĂ©t polimorf fĂŒggvĂ©nyek segĂtsĂ©gĂ©vel.
Hamarosan nĂ©hĂĄny termĂ©nyt kell leszedni, hogy kiszĂĄllĂthassĂĄk az eladĂĄs Ă©rdekĂ©ben. A malacoknak is Ă©telre van szĂŒksĂ©gĂŒk, ezĂ©rt jĂł ötlet megszĂĄmolni, mennyi Ă©telt kell rendelni. Ezen feladatok elvĂ©gzĂ©sĂ©hez polimorf fĂŒggvĂ©nyeket hasznĂĄlhatsz, ebben az esetben a len() fĂŒggvĂ©nyt fogjuk hasznĂĄlni.
A polimorf fĂŒggvĂ©nyek olyan fĂŒggvĂ©nyek, amelyeket többfĂ©le adattĂpussal is hasznĂĄlhatunk. PĂ©ldĂĄul a len() fĂŒggvĂ©ny az objektumok hosszĂĄnak kiszĂĄmĂtĂĄsĂĄra szolgĂĄl, Ă©s ezek az objektumok kĂŒlönbözĆ adattĂpusok lehetnek, mint a listĂĄk, szĂłtĂĄrak, sĆt karakterlĂĄncok. Kezdd azzal, hogy megszĂĄmolod az alsĂł X jeleket a mezĆn, mielĆtt ĂĄttĂ©rnĂ©l a magasabb X jelekre a pajtĂĄban.
Több malac is van egy ketrecben az Ășt mellett, neveik: "Peggle", "Peter", "Piper", "Pedro". Tedd a neveiket egy listĂĄba, hogy megszĂĄmolhasd Ćket. Ily mĂłdon: piglets = ["Peggle", "Peter", "Piper", "Pedro"] . Hozz lĂ©tre egy number nevƱ vĂĄltozĂłt a lista hosszĂĄnak tĂĄrolĂĄsĂĄra a len() fĂŒggvĂ©ny hasznĂĄlatĂĄval, Ăgy: number = len(piglets).
MiutĂĄn beĂĄllĂtottad a listĂĄt Ă©s a vĂĄltozĂłt, menj a malacketrec elĆtt talĂĄlhatĂł sötĂ©t X jelhez, fordulj a ketrec felĂ©, Ă©s hasznĂĄld a speak() fĂŒggvĂ©nyt a malacok megszĂĄmlĂĄlĂĄsĂĄhoz. A number vĂĄltozĂłval kapd meg az eredmĂ©nyt, Ăgy: player.speak("There are d% Piglets" % (number) )
MiutĂĄn kĂ©sz vagy a malacok ellenĆrzĂ©sĂ©vel, menj a mezĆnĂ©l talĂĄlhatĂł vilĂĄgos X jelhez, fordulj a termĂ©ny felĂ©, Ă©s szĂĄmlĂĄld Ćket. HĂĄrom (3) kĂŒlönbözĆ tĂpusĂș termĂ©ny van: "Tomatoes", "Pumpkins", "Eggplant". SzĂĄmold meg, hogy hĂĄny termĂ©ny nĆ mindegyikbĆl, Ă©s tĂĄrold Ćket egy szĂłtĂĄrban, Ăgy:
crops = {} crops["Tomato"] = number of tomato crops crops["Pumpkin"] = number of Pumpkin crops crops["Eggplant"] = number of Eggplant crops
MiutĂĄn feltöltötted a szĂłtĂĄrat a megfelelĆ Ă©rtĂ©kekkel, hasznĂĄld a speak() fĂŒggvĂ©nyt a len() fĂŒggvĂ©nnyel egyĂŒttesen, hogy megszĂĄmold a rendelkezĂ©sre ĂĄllĂł termĂ©nytĂpusokat, Ăgy: player.speak("There are d% types of crops" % ( len(crops) ) ) .
MiutĂĄn megszĂĄmoltad mind a malacokat, mind a termĂ©nyeket, menj a lila szĆnyegen talĂĄlhatĂł sötĂ©t X jelhez, hogy ellenĆrizd a kiszĂĄllĂtandĂł termĂ©nyek rendelĂ©sĂ©t. Van egy order nevƱ vĂĄltozĂł, amely egy karakterlĂĄncot tartalmaz a kiszĂĄllĂtandĂł termĂ©nyek rendelĂ©seirĆl. Meg kell tudnunk, hogy mik a rendelĂ©sek, Ă©s hĂĄny rendelĂ©sĂŒnk van, ezt a speak() fĂŒggvĂ©ny hasznĂĄlatĂĄval, a karakterlĂĄnc szĂ©tszedĂ©sĂ©vel, valamint a len() fĂŒggvĂ©ny alkalmazĂĄsĂĄval Ă©rhetjĂŒk el.
player.speak( [*order] ) player.speak("There are d% orders of crops going out" % ( len(order) ) )
A karakterlĂĄnc vĂĄltozĂł behelyezĂ©sĂ©vel kapcsos zĂĄrĂłjelek közĂ© Ă©s a * hasznĂĄlatĂĄval aktivĂĄljuk a karakterlĂĄnc szĂ©tszedĂ©sĂ©t, pĂ©ldĂĄul: [*string]. Ez azt jelenti, hogy a karakterlĂĄnc minden egyes karakterĂ©t kĂŒlön elemmĂ© teszi egy listĂĄban; pĂ©ldĂĄul: [*string] eredmĂ©nye egy lista: ['s', 't', 'r', 'i', 'n', 'g']. A len() fĂŒggvĂ©ny hasznĂĄlata esetĂ©n pedig megszĂĄmolja, hogy hĂĄny karakterbĆl ĂĄll a string.
A feladat lezĂĄrĂĄsakĂ©nt menj a pajta jobb oldalĂĄn talĂĄlhatĂł arany X jelhez, Ă©s ĂĄllapĂtsd meg, hĂĄny font Ă©telt kell szĂĄllĂtani a malacok szĂĄmĂĄra. Hozz lĂ©tre egy food nevƱ vĂĄltozĂłt, amelynek az Ă©rtĂ©kĂ©t Ășgy kapod meg, hogy a korĂĄbban lĂ©trehozott number vĂĄltozĂłt megszorzod 35-tel, Ăgy: food = number * 35.
Miközben a pajtĂĄt nĂ©zed, hasznĂĄld a speak() fĂŒggvĂ©nyt a food vĂĄltozĂłval egyĂŒtt, hogy meghatĂĄrozd a szĂĄllĂtandĂł Ă©tel mennyisĂ©gĂ©t, Ăgy: player.speak("There are d% pounds of food coming in" % (food) ) .