Python feladatok és tesztek (248 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


10 Fájlok URL


10-00 Fájlok - teszt URL


Feladat leírás:
f = open('fájlnév.txt', 'rt', encoding='utf-8') - UTF-8 kódolású szöveges fájl megnyitása olvasásra (r=read, t=text fájl)
f = open('fájlnév.txt', 'wt', encoding='utf-8') - Szövegfájl megnyitása írásra. Ha a fájl nem létezett, akkor létrehozza. Ha létezett, akkor törli a tartalmát. (w=write, t=text fájl)
f = open('fájlnév.txt', 'at', encoding='utf-8') - Szövegfájl megnyitása folytatólagos írásra. Ha a fájl nem létezett, akkor létrehozza. Ha létezett, akkor hozzáírunk a végére. (a=append, t=text fájl)
f.write('kiírandó szöveg') - Szöveg kiírása az f fájlba
f.close() - Az f fájl lezárása

Egy fájl tartamának beolvasása kisebb fájlok esetén:
tartalom = f.read() - Az f fájl teljes tartalmának a kiolvasása egy sztringbe
tartalom = f.read().splitlines() - Az f fájl soraiból készítünk listát
tartalom = f.read().splitlines()[1:] - Az f fájl soraiból készítünk listát, kihagyva belőle a fejlécet, azaz a fájl első sorát

Egy tipikus fájl beolvasási megoldás:
f = open('fájlnév.txt', 'rt', encoding='utf-8') # megnyitjuk a fájlt olvasásra
tartalom = f.read().splitlines() # a tartalmát beolvassuk úgy, hogy a sorok egy lista elemei lesznek
f.close() # miután a tartalmat beolvastuk, a fájlt lezárhatjuk
# innentől kezdődik a fájl tartalmának a feldolgozása, például soronként
for sor in tartalom:
   pass

Nagyobb fájlok esetén soronként olvassuk csak be a fájlból az adatokat:
sor = f.readline().strip()
while sor:
   ...
   sor = f.readline().strip()


Oldd meg az alábbi űrlap feladatait: 10 Fájlok - teszt

10-01 Költők és írók URL


Feladat leírás:
Hozz létre külön mappában egy "10-01 Koltok es irok.py" Python fájlt.
Olvasd be a 'magyar-koltok-irok.txt' utf-8 kódolású szövegfájl tartalmát és írd azt ki a konzolra.
A mellékelt fájlt innen töltheted le: magyar-koltok-irok.txt
Végeredmény minta (részlet):
10-01 Költők és írók

10-02 Költők URL


Feladat leírás:
Hozz létre külön mappában egy "10-02 Koltok.py" Python fájlt.
Olvasd be a 'magyar-koltok-irok.txt' utf-8 kódolású szövegfájl tartalmát és írd ki a konzolra a költőket.
A mellékelt fájlt innen töltheted le: magyar-koltok-irok.txt
Végeredmény minta (részlet):
10-02 Költők

10-03 Költők és írók URL


Feladat leírás:
Hozz létre külön mappában egy "10-03 Koltok es irok.py" Python fájlt.
Olvasd be a 'magyar-koltok-irok.txt' utf-8 kódolású szövegfájl tartalmát és írd ki a konzolra azokat, akik költők és írók is egyszerre.
A mellékelt fájlt innen töltheted le: magyar-koltok-irok.txt
Végeredmény minta (részlet):
10-03 Költők és írók

10-04 Kábítószer URL


Feladat leírás:
Hozz létre külön mappában egy "10-04 Kabitoszer.py" Python fájlt.
A 'Kabitoszeres buncselekmenyek.txt' utf-8 kódolású szövegfájl tartalmazza a 2009 és 2020 között Magyarországon elkövetett kábítószeres bűncselekmények számát. Keresd meg algoritmussal és írd ki a konzolra a 2015 utáni években elkövetett bűncselekmények számát. A program akkor is jól működjön, ha frissítik az adatfájlt a legutóbbi évek adataival.
A mellékelt fájlt innen töltheted le: Kabitoszeres buncselekmenyek.txt
Végeredmény minta (részlet):
10-04 Kábítószer

10-05 Kiválasztás - kábítószer URL


Feladat leírás:
Hozz létre külön mappában egy "10-05 Kivalasztas - kabitoszer.py" Python fájlt.
A 'Kabitoszeres buncselekmenyek.txt' utf-8 kódolású szövegfájl tartalmazza a 2009 és 2020 között Magyarországon elkövetett kábítószeres bűncselekmények számát. Keresd meg algoritmussal és írd ki a konzolra melyik évben történt a legtöbb bűnelkövetés és az mennyi volt.
A mellékelt fájlt innen töltheted le: Kabitoszeres buncselekmenyek.txt
Végeredmény minta (részlet):
10-05 Kiválasztás - kábítószer

10-06 Véletlen számok fájlba URL


Feladat leírás:
Hozz létre külön mappában egy "10-06 Veletlen szamok fajlba.py" Python fájlt.
Generálj 50 véletlen pozitív egész háromjegyű számot és azokat írd ki egy "szamok.txt" fájlba. Minden szám külön sorba kerüljön.

10-07 Páratlan számok fájlba URL


Feladat leírás:
Hozz létre külön mappában egy "10-07 Paratlan szamok fajlba.py" Python fájlt.
Olvass be egész számokat addig amíg 0-át nem írnak be.
Ha páratlan számot adtak meg, akkor azt írd ki a "paratlan.txt" fájlba, mindegyik számot külön sorba.
Ha nem egész számot adnak meg, vagy nem páratlan a szám, akkor azt hagyjuk figyelmen kívül és kérjük a következőt.
A mellékelt fájlt innen töltheted le: paratlan.txt
Végeredmény minta (részlet):
10-07 Páratlan számok fájlba

10-08 F betűs sorok A Walesi bárdokból URL


Feladat leírás:
Hozz létre külön mappában egy "10-08 Wales F.py" Python fájlt.
Töltsd le és olvasd be A Walesi bárdok c. verset a 'wales.txt' utf-8 kódolású mellékelt fájlból - lásd alább a feladat leírása után.
Írd ki egy "Walesi-bardok-F.txt" fájlba csak azokat a sorokat, amelyekben van kis vagy nagy "f" betű.
A második "végeredmény minta" a létrehozott új fájl tartalmából mutat egy részt.
A mellékelt fájlt innen töltheted le: wales.txt
Végeredmény minta (részlet):
10-08 F betűs sorok A Walesi bárdokból-0
Végeredmény minta (részlet):
10-08 F betűs sorok A Walesi bárdokból-1

10-09 Mérkőzések URL


Feladat leírás:
Hozz létre külön mappában egy "10-09 Merkozesek.py" Python fájlt.
Olvasd be a mellékelt 'merkozesek.txt' utf-8 kódolású szöveges fájl, amelyben egy hét totó eredményei találhatók. A mintának megfelelően számold össze és írd ki az alábbiakat:
1. Hány döntetlen mérkőzés volt az adott héten?
2. A képernyőre írd ki, hogy mely csapatok nem szereztek gólt!
3. Írd ki a gólt nem szerző csapatok neveit a 'goltalanok.txt' utf-8 kódolású fájlba!
A kiírásokat a mintának megfelelően szövegezd!
A mellékelt fájlt innen töltheted le: merkozesek.txt
Végeredmény minta (részlet):
10-09 Mérkőzések

10-12 Fájl adatok URL


Feladat leírás:
Hozz létre egy "10-12 Fajl adatok.py" python fájlt.
Olvasd be a mellékelt adat1.txt és adat2.txt adatfájlt és a minta szerint írd ki a konzolra hány adatsor található bennük.
A mellékelt fájlt innen töltheted le: adat1.txt
A mellékelt fájlt innen töltheted le: adat2.txt
Végeredmény minta (részlet):
10-12 Fájl adatok

10-13 Szakemberek URL


Feladat leírás:
Hozz létre egy "10-13 Szekemberek.py" python fájlt.
Olvasd be a mellékelt "szakemberek.txt" adatfájlt, amely soronként az alábbi adatokat tartalmazza:
Név;Születési dátum;Város;Szakma
Mint például:
Boros Dávid;1965-01-05;Székesfehérvár;Kereskedelmi ügyintéző

A minta szerint
1. Írd ki a konzolra hány adatsor található a listában
2. Listázd ki a szegedi pékeket
3. Kérj be a felhasználótól egy dátumot és listázd ki az az után született budapesti pékeket
A mellékelt fájlt innen töltheted le: szakemberek.txt
Végeredmény minta (részlet):
10-13 Szakemberek

10-14 Fiatal szakik URL


Feladat leírás:
Hozz létre egy "10-14 Fiatal szakik.py" python fájlt.
Olvasd be a mellékelt "szakemberek.txt" UTF-8 kódolású szövegfájlt, amely soronként az alábbi adatokat tartalmazza:
Név;Születési dátum;Város;Szakma
Mint például:
Rácz Abigél;1982-08-24;Érd;Ügyvéd

A minta szerint:
1. Írd ki a konzolra hány adatsor található a listában
2. Listázd ki a 22 évnél fiatalabb budapesti állattartókat a konzolra
3. E fentebbi listát írd ki egy fiatal_szakik.txt UTF-8 kódolású fájba is.

A program kommunikációját a mintának megfelelően szövegezd.
A mellékelt fájlt innen töltheted le: szakemberek.txt
Végeredmény minta (részlet):
10-14 Fiatal szakik

10-15 Névsor URL


Feladat leírás:
Névsorban keresünk ismétlődő neveket.
Hozz létre egy "10-15 Nevsor.py" python fájlt.
A mellékelt "nevsor.txt" UTF-8 kódolású szövegfájl az alábbi adatokat tartalmazza:
név;kor;nem
Mint például:
Székely Alexandra;18;nő
Fehér Csongor;19;férfi
Váradi Flóra;15;nő

Keresd meg, hogy a névsorban mely nevek ismétlődnek és hányszor.
Ha nem található többszörös név, akkor írjuk ki, hogy "Nincs többször előforduló név a névsorban."

A program kommunikációját a mintának megfelelően szövegezd.
A mellékelt fájlt innen töltheted le: nevsor.txt
Végeredmény minta (részlet):
10-15 Névsor

10-16 Nyomtatás URL


Feladat leírás:
Megszámoljuk, hogy hány oldalt nyomtattak.
Hozz létre egy "10-16 Nyomtatas.py" python fájlt.
A mellékelt "nyomtatas.txt" UTF-8 kódolású szövegfájl az alábbi adatokat tartalmazza:
dátum;név;oldal
Mint például:
2021-07-03;Márton Ákos;5
2021-11-25;Tóth Benedek;10

Számold össze, hogy a névsorban szereplők összesen hány oldalt nyomtattak.
A program kommunikációját a mintának megfelelően szövegezd.
A mellékelt fájlt innen töltheted le: nyomtatas.txt
Végeredmény minta (részlet):
10-16 Nyomtatás

10-17 Napi nyomtatás URL


Feladat leírás:
Megszámoljuk, hogy hány oldalt nyomtattak egy nap.
Hozz létre egy "10-17 Napi nyomtatas.py" python fájlt.
A mellékelt "nyomtatas.txt" UTF-8 kódolású szövegfájl az alábbi, 2021-es nyomtatási adatokat tartalmazza:
dátum;név;oldal
Mint például:
2021-07-03;Márton Ákos;5
2021-11-25;Tóth Benedek;10

Kérdezd meg a felhasználót, hogy melyik napra kíváncsi.
Számold össze, hogy azon a napon a névsorban szereplők összesen hány oldalt nyomtattak.
A program kommunikációját a mintának megfelelően szövegezd.
A mellékelt fájlt innen töltheted le: nyomtatas.txt
Végeredmény minta (részlet):
10-17 Napi nyomtatás-0
Végeredmény minta (részlet):
10-17 Napi nyomtatás-1

10-18 Személyes nyomtatás URL


Feladat leírás:
Megszámoljuk, hogy hány oldalt nyomtatott valaki 2021-ben.
Hozz létre egy "10-18 Szemelyes nyomtatas.py" python fájlt.
A mellékelt "nyomtatas.txt" UTF-8 kódolású szövegfájl az alábbi, 2021-es nyomtatási adatokat tartalmazza:
dátum;név;oldal
Mint például:
2021-07-03;Márton Ákos;5
2021-11-25;Tóth Benedek;10

Kérdezd meg a felhasználót, hogy kire kíváncsi.
Számold össze, hogy az illető összesen hány oldalt nyomtatott.
A program kommunikációját a mintának megfelelően szövegezd.
A mellékelt fájlt innen töltheted le: nyomtatas.txt
Végeredmény minta (részlet):
10-18 Személyes nyomtatás-0
Végeredmény minta (részlet):
10-18 Személyes nyomtatás-1
Végeredmény minta (részlet):
10-18 Személyes nyomtatás-2

10-19 Konvertálás URL


Feladat leírás:
Egy fájl tartalmát mentjük ki más formában.
Hozz létre egy "10-19 Konvertalas.py" python fájlt.
Olvasd be a mellékelt "szakemberek.txt" adatfájlt, amely soronként az alábbi adatokat tartalmazza:
Név;Születési dátum;Város;Szakma
Mint például:
Boros Dávid;1965-01-05;Székesfehérvár;Kereskedelmi ügyintéző

Írd ki az összes adatot egy másik "szakemberek2.txt" fájlba úgy, hogy a nevek, de csak a nevek csupa nagybetűsek legyenek.

További opcionális teendők
- a dátumokban az elválasztás kötőjel helyett kettőspont legyen
- csak a januári adatokat írd ki
- csak a budapestieket írd ki

A program kommunikációját a minta szerint szövegezd!
A mellékelt fájlt innen töltheted le: szakemberek.txt
Végeredmény minta (részlet):
10-19 Konvertálás

10-20 Nyomtatás statisztika URL


Feladat leírás:
Nyomtatási adatokat kezelünk.
Hozz létre egy "10-20 Nyomtatas statisztika.py" python fájlt.
A mellékelt "nyomtatas.txt" UTF-8 kódolású szövegfájl az alábbi, 2021-es nyomtatási adatokat tartalmazza:
dátum;név;oldal
Mint például:
2021-07-03;Márton Ákos;5
2021-11-25;Tóth Benedek;10

1. Számold össze, hogy melyik hónapban hány oldal nyomtatás volt összesen és írd ki azt, amelyikben a legtöbb volt.

2. Kérdezd meg a felhasználót, hogy hányadik hónapra kíváncsi. A megadott hónap nyomtatási listáját írd ki egy nyomtat_x.txt fájlba, ahol az x a hónap száma.
A hónap száma biztosan 1 és 12 között van, azt nem kell ellenőrizni.

A program kommunikációját a mintának megfelelően szövegezd.
A mellékelt fájlt innen töltheted le: nyomtatas.txt
Végeredmény minta (részlet):
10-20 Nyomtatás statisztika-0
Végeredmény minta (részlet):
10-20 Nyomtatás statisztika-1

10-21 Színházjegyek URL


Feladat leírás:
Színházi jegyek eladási adatait dolgozzuk fel.
Hozz létre egy "10-21 Szinhazjegyek.py" Python fájlt. A mintának megfelelően tájékoztasd a felhasználót a program működéséről. Egy kis színház 2021 évi jegy eladásainak adatait tároltuk egy utf-8 kódolású szöveges fájlban: szinhazjegy.txt
Három típusú előadást tartottak:
kódmegnevezésár
GYGyerek darab1200
FFelnőtt darab2600
KKoncert3400

A műsorokat két városban adták elő: Szegeden és Debrecenben.
Ennek megfelelően a szinhazjgy.txt fájlban fejléc nélkül szerepelnek az adatok: Dátum; Előadás típusa; Eladott jegyek száma; Város. Mint pl.:
2021-01-03;K;78;Szeged
2021-01-06;F;64;Debrecen
2021-01-06;GY;75;Szeged
...
- Írd ki, hogy hány adatsor található a mellékelt fájlban?

- Keresd meg, hogy melyik városban és melyik előadástípusra adtak el legtöbb jegyet

- Kérdezd meg a felhasználót, hogy melyik előadás típusra kíváncsi és az annak megfelelő adatokat írd ki egy jegy_x.txt utf-8 kódolású szöveges fájlba, ahol x az előadástípus kódja. A program akkor is jól működjön, ha a felhasználó kisbetűvel adta meg a kódot.

A program kommunikációját a mintának megfelelően szövegezd.
A mellékelt fájlt innen töltheted le: szinhazjegy.txt
Végeredmény minta (részlet):
10-21 Színházjegyek-0
Végeredmény minta (részlet):
10-21 Színházjegyek-1
Végeredmény minta (részlet):
10-21 Színházjegyek-2

10-22 Mozi URL


Feladat leírás:
Mozi látogatások adatait dolgozzuk fel.
Hozz létre egy "10-22 Mozi.py" Python fájlt. A mintának megfelelően tájékoztasd a felhasználót a program működéséről.
Egy mozi 2022 évi látogatási adatait tároltuk egy utf-8 kódolású szöveges fájlban: mozi.txt
Öt típusú filmet vetítettek: Gyerekfilm (G), Játékfilm (J), Dokumentumfilm (D), Zenés film (Z), Történelmi film (T).
Három teremben mentek a vetítések: Alagsor (A), Földszint (F), Emelet (E)
A fájlban fejléc nélkül, vesszővel elválasztva szerepelnek az adatok: Dátum, Terem-kód, Film típus-kód, Látogatók száma. Mint pl.:
2021-01-03,A,G,78
2021-01-06,F,T,64
2021-01-06,E,D,75
...
- Írd ki, hogy hány adatsor található a mellékelt fájlban
- Írd ki, hogy melyik teremben mely típusú filmet látogatták a legtöbben
- Írd ki termenként a látogatók össz számát
- Írd ki film típusonként a látogatók össz számát
- Kérdezd meg a felhasználót, hogy melyik film típusra kíváncsi, és az annak megfelelő adatokat írd ki egy latogatok_x.txt utf-8 kódolású szöveges fájlba.
A fájl nevében x az film típus-kódja.

A program kommunikációját a mintának megfelelően szövegezd.
A mellékelt fájlt innen töltheted le: mozi.txt
Végeredmény minta (részlet):
10-22 Mozi-0
Végeredmény minta (részlet):
10-22 Mozi-1

10-23 Válogatás URL


Feladat leírás:
Egy számokat és szavakat tartalmazó fájl adatait dolgozzuk fel.
Hozz létre egy "10-23 Valogatas.py" Python fájlt. A mintának megfelelően tájékoztasd a felhasználót a program működéséről.
Adott egy utf-8 kódolású szöveges fájl: adatok.txt, amelyben vegyesen vannak üres sorok, pozitív egész számok és szavak. Egy sorban legföljebb egy adat van, de az adat előtt és után lehetnek fölösleges szóközök.
Tájékoztasd a felhasználót a program működéséről, a mintának megfelelően.
Írd ki, hogy
- hány sort tartalmaz a fájl,
- hány üres sor található benne,
- melyik a leghosszabb szöveg és
- melyik a legnagyobb szám
A program kommunikációját a mintának megfelelően szövegezd.
A mellékelt fájlt innen töltheted le: adatok.txt
Végeredmény minta (részlet):
10-23 Válogatás-0

10-24 Kigyűjtés URL


Feladat leírás:
Ez a program alkalmazottakat kategorizál munkakör szerint.
Hozz létre egy "10-24 Kigyujtes.py" Python fájlt.
Olvasd be a mellékelt adatok.txt fájlból az adatokat, majd sorold fel a következő munkakörök munkásait:
Boltvezető, Boltvezető helyettes, Raktáros, Kasszás, Húspultos, Árufeltöltő

A program akkor is jól működjön, ha az adatfájl módosul.
A program kommunikációját a mintának megfelelően szövegezd!
A mellékelt fájlt innen töltheted le: adatok.txt
Végeredmény minta (részlet):
10-24 Kigyűjtés

10-25 Márkák URL


Feladat leírás:
Kiírjuk az "adatlista.txt" fájlból az összes elérhető márkát.
Hozz létre egy "10-25 Markak.py" Python fájlt.
Olvasd be a mellékelt adatlista.txt fájlból az adatokat, majd és gyűjtsd ki a márkákat abc sorrendben, majd írd ki őket. A kiírásnál a márkanevek ne ismétlődjenek!

A program akkor is jól működjön, ha az adatfájl módosul.
A program kommunikációját a mintának megfelelően szövegezd!
A mellékelt fájlt innen töltheted le: adatlista.txt
Végeredmény minta (részlet):
10-25 Márkák

10-26 Kedvezmény URL


Feladat leírás:
Beolvassuk egy fájl tartalmát, majd leszűrjük a felhasználó kérése szerint.
Hozz létre egy "10-26 Kedvezmeny.py" Python fájlt.
Olvasd be az "adatlista.txt" fájl tartalmát, majd kérdd be a felhasználótól, hogy akar-e kedvezményes ruhákat látni vagy csak a normál áruakat.
Feltételezzük, hogy a felhasználó helyes adatokat ad meg.

A program akkor is jól működjön, ha az adatfájl módosul.
A program kommunikációját a mintának megfelelően szövegezd!
A mellékelt fájlt innen töltheted le: adatlista.txt
Végeredmény minta (részlet):
10-26 Kedvezmény_0
Végeredmény minta (részlet):
10-26 Kedvezmény_1
Ugrás az elejére