Tudáselmélyítés és gyakorlás kész függvények vagy metódusok leutánzásával.

Ahogy a természetes nyelveknél a készségszintű tudáshoz csak a rendszeres aktív gyakorlás vezet, ugyanez igaz a programozási nyelvek tanulására is. Nem elég csak olvasni a nyelv szabályait és kész kódokat, hanem írni is kell azokat, minél többet. Nyilván, ha valakinek ez a foglalkozása, akkor ez megvalósul, de azoknak, akik a nyelvet tanulják és olyan a napi elfoglaltságuk, hogy nem kell újabb és újabb programot fejleszteni, azoknak ajánlatos, hogy maguk találjanak ki feladatokat és oldják meg programmal.

Először mindig célszerű egyszerű dolgokkal kezdeni, hogy a megoldás sikerélménye az egyre nehezebb feladatok kódolására ösztönözzön. Ha más nem jut eszünkbe, akkor jó módszer viszonylag egyszerű megoldandó feladatnak, ha megpróbáljuk a Python által készen nyújtott függvények, metódusok vagy osztályok saját készítésű változatát létrehozni. A cél tehát az, hogy funkcionálisan ugyanazt valósítsa meg a mi definíciónk, mint a készen rendelkezésre álló. Meg fogjuk látni, hogy mennyi minden tanult ismeretet kell ilyenkor is már hasznosítani, ami ezáltal aktívvá teszi a tanultakat, és a szinte elkerülhetetlen hibázások, és azok javítása ezt csak tovább mélyítik.

Ennek szellemében gyakorlásképpen utánozzuk le mondjuk a karakterláncokra meghívható find() és count() metódusokat, vagyis írjunk egy-egy függvényt, amelyek ugyanazt tudják, mint ezek a metódusok. Azt, hogy ezek a metódusok pontosan mit csinálnak, milyen argumentumokat fogadnak és mi a visszatérési értékük a Python hivatalos dokumentációjában, vagy magyarul és kicsit bővebben kifejtve a Python tudásépítés lépésről lépésre című e-könyvben példákkal együtt megtalálható.

De röviden összegezve:

Ha egy szöveg nevű változó egy karakterláncot tartalmaz, akkor a szöveg.find(sub, start, end) metódus a sub argumentumban megadott karaktersorozat első előfordulásának indexével tér vissza, vagy ha nem található a szövegben a sub, akkor -1 lesz a visszaadott érték. A start és end paraméterekkel a keresést korlátozhatjuk a kezdő és vég indexek közé.

A szöveg.count(sub, start, end) metódus a find()-hoz hasonló argumentumokat fogad, és a visszatérési értéke, a sub adott kezdő és végindex közötti előfordulásainak a száma.

Mivel a start és end paramétereknek negatív indexet is meg lehet adni, a saját függvényeink készítéséhez nem árt, ha visszaidézzük, hogy sorozatokra hogyan működik a negatív indexelés. Ebben segít az alábbi ábra.

A következő kódsorokban a megvalósított find() és count() függvények definícióit látjuk. A kommentek segítik a működés megértését.

A függvénytörzs kódja egyik esetben sem túl bonyolult, mégis számos dolgot, nyelvi elemet és szerkezetet kell még ilyen esetben is ismerni, hogy előállítsuk a megfelelő kódot: használtunk feltételes kifejezést, for- és while-ciklust, értékadó kifejezést, feltételes elágazást, szeletképzést és kiterjesztett értékadást. De mindenekelőtt el kell gondolkodni a feladat megoldási módján, algoritmusán. Valójában ez határozza meg, hogy milyen nyelvi eszköztárat vetünk be a probléma megoldásához.

A függvényeink működését úgy teszteljük le, hogy bizonyos kezdő- és végindexet megadva összevetjük a visszatérési értéküket a megfelelő metódus visszatérési értékével. Ha ezek eltérnek, akkor hibás a függvényünk, amiről üzenetet jelenítünk meg. Jelen esetben a tesztadatokra nem kaptunk hibajelzést, ezért úgy tűnik, hogy a függvényeink az elvárások szerint működnek.

Érdekel a Python tudásépítés lépésről lépésre az alapoktól az első asztali alkalmazásig című e-könyv.