Uncategorized

Hogyan nyerjük ki egy szótár elemeit (kulcs-érték párjait), az értékek szerint rendezve?

Tegyük fel, hogy egy tornászcsapat tagjainak magasságértékei a nevükhöz rendelve egy szótárban állnak rendelkezésre. A tornászokat csökkenő magasság szerint tornasorba akarjuk állítani, vagyis úgy szeretnénk a szótár elemeit egymás után kinyerni, hogy a kiolvasási sorrend a magasság szerinti csökkenő sorrendet jelentse. Egy korábbi bejegyzésben már volt szó arról, hogy elviekben a szótár mint konténerobjektum vagy …

Hogyan nyerjük ki egy szótár elemeit (kulcs-érték párjait), az értékek szerint rendezve? Read More »

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 …

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

Hogyan cseréljük le egy szövegben az ékezetes magánhangzókat ékezet nélküli megfelelőjükre?

A feladatot több módon is megoldhatjuk. Az első, ami eszünkbe juthat, hogy vesszük sorban egymás után a szöveg karaktereit, és ellenőrizzük, hogy ékezetes magánhangzó-e. Ha igen, akkor a karakterláncokra értelmezett replace() metódussal kicseréljük ezt, és az így módosított karakterlánccal folyatjuk a vizsgálatot és szükség esetén a cserét. Ezt mutatja az alábbi kódsor első függvénydefiníciója. Ezzel …

Hogyan cseréljük le egy szövegben az ékezetes magánhangzókat ékezet nélküli megfelelőjükre? Read More »

Hogyan távolítsuk el a többszörös szóközöket egy karakterláncban?

Előfordulhat, hogy egy karakterláncban közvetlenül egymás követően több szóköz szerepel, amely a további feldolgozás szempontjából nem kívánatos. Ezért a feladat az, hogy úgy alakítsuk át a karaktersorozatot, hogy minden egynél több, egymás utáni szóköz helyett csak egyetlen egy szerepeljen. A talán legegyszerűbb megoldás elve, hogy A fent vázolt lépések szerkezetéből adódóan a megvalósítás akár iterációval …

Hogyan távolítsuk el a többszörös szóközöket egy karakterláncban? Read More »

Hogyan ellenőrizzük egy szövegben szereplő zárójelek megfelelő párosítottságát?

Írjunk egy függvényt, ami True értéket ad vissza, ha az argumentumban megadott szövegben a kerek zárójelek párosítottak, vagyis megfelelő sorrendben minden bal zárójelhez tartozik jobb zárójel. Ha ez nem teljesül, akkor a függvény visszatérési értéke False. Ha balról az első zárójel jobb zárójel, akkor biztos, hogy nem lesznek megfelelően párosítottak a zárójelek. Ha pedig balról …

Hogyan ellenőrizzük egy szövegben szereplő zárójelek megfelelő párosítottságát? Read More »

Miért hasznos, hogy az objektumoknak van igazságértéke?

A Pythonban minden objektum rendelkezik logikai igaz vagy hamis értékkel. Ez azt jelenti, hogy bármely objektumra elvégezhető a logikai értékvizsgálat. Egy objektum logikai értékét közvetlenül úgy kérdezhetjük le, hogy a vizsgált objektumot a bool() konstruktor zárójelei közé írjuk, és ennek eredményeképpen True vagy False értéket kapunk. Alapértelmezésben minden objektum logikai igaz (True) értékkel rendelkezik. Ez …

Miért hasznos, hogy az objektumoknak van igazságértéke? Read More »

Hogyan előzzük meg a névütközéseket osztályok öröklése esetén?

Tegyük fel, hogy van egy készen kapott, beimportált Számla osztályunk, amelynek csak a leírását és nyilvános attribútumait ismerjük, de a belső megvalósítását nem. Ebből az osztályból egy példányt a számlaszám és az egy alkalommal történő pénzfelvétel maximális összegének megadásával hozhatunk létre. A példányra három metódust hívhatunk meg, amelyek lehetővé teszik összeg befizetését, felvételét, valamint az …

Hogyan előzzük meg a névütközéseket osztályok öröklése esetén? Read More »

Miért futnak le az osztálydefiníció törzsének utasításai azonnal, azaz mielőtt példányt hoznánk létre belőle?

Az objektumok a logikailag összetartozó adatokat (amelyek az objektumok állapotát jellemzik), valamint az ezeken műveletet végző hívható objektumokat, azaz metódusokat összerendelik. Ezt hívják egységbe zárásnak (encapsulation). Az azonos típusú objektumoknál a metódusok azonosak, ezért megkülönböztetni egymástól az egyes példányokat az adatattribútumok eltérő értékei alapján lehet. Például a Háromszög típusú objektumok mindegyikére lehet definiálni egy megfelelő …

Miért futnak le az osztálydefiníció törzsének utasításai azonnal, azaz mielőtt példányt hoznánk létre belőle? Read More »

Hozzáférhet-e több closure függvény ugyanahhoz a körülzárt lokális változóhoz?

A rövid válasz, hogy igen. Már csak az a kérdés, hogy hogyan. Ez azért merül fel, mert amikor closure-ről van szó, általában egy körülzáró függvénybe (enclosing function) ágyazott egyetlen függvényre gondolunk, ami a körülzáró függvény visszatérési értéke lesz, és ami később a hívása helyén hozzáfér a körülzáró függvény lokális változóihoz. Azonban semmi nem korlátozza azt, …

Hozzáférhet-e több closure függvény ugyanahhoz a körülzárt lokális változóhoz? Read More »

Hogyan tudunk futási időt csökkenteni többlet memória felhasználásával?

Tegyük fel, hogy olyan műveletet kell végezni a programunknak, amely érzékelhető futási idő növekedéssel jár, és ráadásul ezt többször is végre kell hajtani. Ha ez a művelet determinisztikus, vagyis ugyanarra a bemenő adatra vagy kérésre mindig ugyanazt a kimenő adatot, illetve választ adja, akkor alkalmazhatjuk az úgynevezett memoizációt. Ez lényegét tekintve azt jelenti, hogy adott …

Hogyan tudunk futási időt csökkenteni többlet memória felhasználásával? Read More »