Python feladatok és tesztek (300 feladat)

Az oldal folyamatos fejlesztés alatt áll. Ha észrevételed van, örülnénk, ha megosztanád velünk: info @ tanit . hu
iPhone-okra egy Python programozási lehetőség: Python 3IDE, Androidos mobilokra: QPython 3L
Az érettségi feladatokat a mellékletekkel, megoldásokkal együtt az Oktatási Hivatal weboldaláról vettük át. És van Online Python editor is :)

Tartalomjegyzék


12 Osztályok URL


12-00 Osztályok - teszt URL


Feladat leírás:

FOGALMAK:
OOP - Objektum Orientált Programozás
objektum - Összetett adatstruktúra, amelyben együtt vannak különböző változók és függvények. Az objektum változóinak aktuális értékei jelentik az objektum állapotát, a függvényei pedig azt, hogy mit lehet vele tenni. A metódusok sok esetben megváltoztathatják az objektum állapotát, vagy információt szolgáltathatnak az objektum állapotáról. Az objektum felfogható úgy, mintha egy virtuális betanított munkás lenne.
osztály - Az objektumok típusa avagy sablonja, amely alapján az objektumok készülnek. Az osztályban van leírva, hogy a belőle készülő objektumok milyen tulajdonságokkal rendelkeznek és milyen metódusaik vannak. Az osztály felfogható úgy, mint a betanított munkások munkaköri leírása.
példányosítás - Az a művelet, amely során az osztályból létrehozunk egy objektumot. A példányosítás felfogható úgy, mintha a munkaköri leírás alapján vennénk fel egy új betanított munkást.
class osztályNeve: - Egy osztály létrehozása.
objektum = osztályNeve() - Egy objektum létrehozása, azaz egy osztály példányosítása
objektum.__dict__ - Az objektum állapotának lekérdezése. Másképpen fogalmazva az objektum jellemzők értékeinek lekérdezése szótár (dictionary) formában
objektum.__dict__ = {...} - Az objektum több állapotjellemzőjének beállítása szótár segítségével
konstruktor - A példányosításkor automatikusan meghívásra kerülő metódus: def __init__(self):


PÉLDÁK:
Egy egyszerű "pont" osztály, amelynek x és y koordinátája van:
class pont:
 x = None
 y = None
 def __init__(self, x = 0, y = 0):
  self.x = x
  self.y = y
 def menjJobbra(self, hossz):
  self.x += hossz

# 1. példányosítás
a = pont(10, 20)

# 2. példányosítás. Itt az __init()-ben megadott alapértelmezett 0,0 értékeket kapja az objektum
b = pont()

# Eltoljuk jobbra mindkét pontot öttel
a.menjJobbra(5)
b.menjJobbra(5)

# Kiírjuk a pontok állapotát
print('a =', a.__dict__) # A konzolon ez fog megjelenni: {'x': 15, 'y': 20}
print('b =', b.__dict__) # A konzolon ez fog megjelenni: {'x': 5, 'y': 0}




Oldd meg az alábbi űrlap feladatait: 12 Osztályok - teszt

12-01 Hibajavítás URL


Feladat leírás:
Egy virtuális pontot mozgatunk két dimenziós koordináta rendszerben.
Hozz létre egy "12-01 Hibajavitas.py" Python fájlt és másold bele a mellékelt forrásfájl tartalmát.
Az osztályt leíró kódban van öt hiba, ezeket javítsd ki!
Az eredeti feladat, amelyre a hibás megoldás született, az alábbi:
Hozz létre egy virtuális pontot egy két dimenziós koordinátarendszer origójában (azaz a 0:0, helyen).
Kérdezd meg a felhasználótól háromszor egymás után, hogy melyik irányba és mennyivel szeretné elmozdítani a pontot. A válaszoknak megfelelően módosítsd a pont állapotát és végül írd ki a pont végső koordinátáit!
Minden pontot érintő műveletet egy "pont" nevű osztállyal valósíts meg!
Az elmozdulás értékénél biztosan egész számot ad meg a felhasználó, azt nem kell ellenőrizni. Az elmozdulás irányát is helyesen adja meg, azt sem kell ellenőrizni.
A program kommunikációja a mintának megfelelően történjen.
A mellékelt fájlt innen töltheted le: 12-01 Hibajavítás.txt
Végeredmény minta (részlet):
12-01 Hibajavítás-0
Végeredmény minta (részlet):
12-01 Hibajavítás-1

12-02 Hibajavítás URL


Feladat leírás:
Egy virtuális pontot mozgatunk két dimenziós koordináta rendszerben.
Hozz létre egy "12-02 Hibajavitas.py" Python fájlt és másold bele a mellékelt forrásfájl tartalmát.
Az osztályt leíró kódban van öt hiba, ezeket javítsd ki!
Az eredeti feladat, amelyre a hibás megoldás született, az alábbi:
Hozz létre egy virtuális pontot egy két dimenziós koordinátarendszer x=5, y=5 helyén.
Kérdezd meg a felhasználótól háromszor egymás után, hogy melyik irányba és mennyivel szeretné elmozdítani a pontot. A válaszoknak megfelelően módosítsd a pont állapotát és végül írd ki a pont végső koordinátáit!
Minden pontot érintő műveletet egy "pont" nevű osztállyal valósíts meg!
Az elmozdulás értékénél biztosan egész számot ad meg a felhasználó, azt nem kell ellenőrizni. Az elmozdulás irányát is helyesen adja meg, azt sem kell ellenőrizni.
A program kommunikációja a mintának megfelelően történjen.
A mellékelt fájlt innen töltheted le: 12-02 Hibajavítás.txt
Végeredmény minta (részlet):
12-02 Hibajavítás-0
Végeredmény minta (részlet):
12-02 Hibajavítás-1

12-03 Pont távolsága URL


Feladat leírás:
Egy virtuális pontot mozgatunk két dimenziós koordináta rendszerben és megállapítjuk az origótól való távolságát.
Hozz létre egy "12-03 Pont tavolsaga.py" Python fájlt.
Hozz létre egy virtuális pontot egy két dimenziós koordinátarendszer x=0, y=0 helyén.
Kérdezd meg a felhasználótól kétszer, hogy melyik irányba és mennyivel szeretné elmozdítani a pontot. A válaszoknak megfelelően módosítsd a pont állapotát és végül írd ki, hogy a pont milyen messze van az origótól, azaz a 0:0 ponttól!
A távolság értékét 2 tizedesre kerekítsd.
Minden pontot érintő műveletet egy "pont" nevű osztállyal valósíts meg, azaz a mozgatásokat és az origótól való távolság lekérdezését is.
Az elmozdulás értékénél biztosan egész számot ad meg a felhasználó, azt nem kell ellenőrizni. Az elmozdulás irányát is helyesen adja meg, azt sem kell ellenőrizni.
A program kommunikációja a mintának megfelelően történjen.
Végeredmény minta (részlet):
12-03 Pont távolsága-0
Végeredmény minta (részlet):
12-03 Pont távolsága-1

12-04 Pontok távolsága URL


Feladat leírás:
Két virtuális pontot mozgatunk két dimenziós koordináta rendszerben és megállapítjuk az egymástól való távolságukat.
Hozz létre egy "12-04 Pontok tavolsaga.py" Python fájlt.
Hozz létre két virtuális pontot egy két dimenziós koordinátarendszer 5:5 és 3:3 helyén.
Kérdezd meg a felhasználótól hogy melyik irányba és mennyivel szeretné elmozdítani az egyik, majd a másik pontot. A válaszoknak megfelelően módosítsd a pontok állapotát és végül írd ki, hogy a két pont milyen messze van egymástól!
A távolság értékét 2 tizedesre kerekítsd.
Minden pontot érintő műveletet egy "pont" nevű osztállyal valósíts meg, azaz a mozgatásokat és egy másik ponttól való távolság lekérdezését is.
Az elmozdulás értékénél biztosan egész számot ad meg a felhasználó, azt nem kell ellenőrizni. Az elmozdulás irányát is helyesen adja meg, azt sem kell ellenőrizni.
A program kommunikációja a mintának megfelelően történjen.
Végeredmény minta (részlet):
12-04 Pontok távolsága-0
Végeredmény minta (részlet):
12-04 Pontok távolsága-1

12-05 Öröklés URL


Feladat leírás:
Színes pontot mozgatunk -10:-10 és 10:10 koordináták között.
Hozz létre egy "12-05 Orokles.py" Python fájlt.
Hozz létre egy 2D pontot reprezentáló osztályt amely definiál egy minimum és maximum x és y értéket összesen négy változóban az osztályon belül, valamint x és y nevű változókat hoz létre melyek None értéket kapnak.
Írj négy külön függvényt melyek az objektum x és y attribútumainak adnak értéket valamint lekérdezik azokat. Az értéket adó függvények dobjanak ValueError-t ha az érték nem a minimum és maximum érték között találhatóak.
Írj még két függvényt a fenti négy függvényt használva, az egyik egy szótár formájában visszaadja az objektum jelenlegi x és y értékét, a másik bekér egy x és y értéket és az objektum attribútumainak adja értékül azokat.
Az osztály konstruktorja a legutóbbi függvényt használja!

Ezután hozz létre egy második osztályt, amely az első osztály leszármazottja legyen, most már egy színt is tárolva.
Ez az osztály definiáljon egy minimum és maximum (r, g, b) szín értéket, valamint egy szín változót ami None értéket kap.
Hozz létre két függvényt a szín értékének megadásához és lekérdezéséhez az előző osztályéhoz hasonlóan. Az értéket adó függvény dobjon ValueError-t ha az érték nem a minimum és maximum érték között található.
Írd felül az előző osztályból azt a függvényt amely az x és y változókat egyszerre adta meg, úgy, hogy most a színt is az előző kettő értékkel együtt adja meg. Az osztály konstruktorja ezt a függvényt használja!
Írd felül az előző osztályból azt a függvényt amely egy szótárban adta vissza az x és y értéket úgy, hogy most a szín értéket is tartalmazza a kimenő szótár.

Ezután hozz létre egy harmadik osztályt, amely a második osztály leszármazottja legyen, most már egy z értéket is tárolva.
Ez az osztály definiáljon egy minimum és maximum z értéket, valamint egy z változót ami None értéket kap.
Hozz létre két függvényt a z értékének megadásához és lekérdezéséhez az előző osztályéhoz hasonlóan. Az értéket adó függvény dobjon ValueError-t ha az érték nem a minimum és maximum érték között található.
Írd felül az előző osztályból azt a függvényt amely az x, y és szín változókat egyszerre adta meg, úgy, hogy most a z értéket is az előző három értékkel együtt adja meg. Az osztály konstruktorja ezt a függvényt használja!
Írd felül az előző osztályból azt a függvényt amely egy szótárban adta vissza az x, y és szín értéket úgy, hogy most a z értéket is tartalmazza a kimenő szótár.

Végül hozz létre egy egszerű folyamatos parancssoros bekérést, ahol a felhasználó ki tudja válsztani mit szretne tenni a ponttal.
Például mozgatni a pontot (jobbra balra fel le előre hátra), a színt változtatni, valamint a pont állapotát lekérdezni.
Végeredmény minta (részlet):
12-05 Öröklés-0
Végeredmény minta (részlet):
12-05 Öröklés-1
Ugrás az elejére