Év végi Python vizsgafeladatsor
- Adatkinyerés (Parsing): Adott egy formázott szöveg:
"Név: Kovács Péter, Született: 2005". Stringműveletek segítségével nyerd ki a születési évet, számold ki a személy jelenlegi életkorát (a 2026-os évvel számolva), és írasd ki egy f-string segítségével! - Pitagorasz: Kérd be a felhasználótól egy derékszögű háromszög két befogójának hosszát! Számold ki az átfogót (használhatod a
mathmodult vagy a hatványozást), majd írasd ki a háromszög kerületét és területét 2 tizedesjegyre kerekítve! - Monogram generátor: Kérj be egy tetszőleges, akár több utónévből álló teljes nevet (pl.
"Kovács Anna Mária"). A program generálja le és írja ki a monogramot (jelen esetben:"K. A. M.")! - Szökőév kalkulátor: Kérj be egy évszámot, és döntsd el, hogy szökőév-e! (Szökőév minden 4-gyel osztható év, kivéve a 100-zal oszthatókat, de a 400-zal oszthatók mégis azok).
- BMI Index kategóriákkal: Kérd be a felhasználó testsúlyát (kg) és magasságát (m). Számold ki a testtömeg-indexét (testsúly / magasság a négyzeten). Elágazások (
eliflánc) segítségével sorold be és írasd ki a kategóriáját (18.5 alatt sovány, 18.5-24.9 normál, 25-29.9 túlsúlyos, 30 felett elhízott)! - Jelszóerősség ellenőrző: Kérj be egy jelszót! A program csak akkor fogadja el, ha legalább 8 karakter hosszú, tartalmaz legalább egy számot, és tartalmaz legalább egy nagybetűt. Ha valamelyik feltétel nem teljesül, pontosan írja ki, hogy mi hiányzik!
- Faktoriális ciklussal: Kérj be egy pozitív egész számot, és egy
whilevagyforciklus segítségével számold ki a faktoriálisát ($n!$). A beépítettmath.factorialfüggvényt nem használhatod! - FizzBuzz: Írasd ki a számokat 1-től 50-ig! Ha a szám osztható 3-mal, írd ki helyette, hogy "Fizz". Ha osztható 5-tel, írd ki, hogy "Buzz". Ha 3-mal és 5-tel is osztható, írd ki, hogy "FizzBuzz"!
- Prímszám ellenőrző: Kérj be egy egész számot, és egy ciklus segítségével vizsgáld meg, hogy prímszám-e (csak 1-gyel és önmagával osztható)! A keresést optimalizáld: elég csak a szám négyzetgyökéig vizsgálni az osztókat.
- Rajzolás konzolra: Kérj be egy számot (pl. 5), és két egymásba ágyazott
forciklus segítségével rajzolj ki a képernyőre egy csillagokból (*) álló derékszögű háromszöget, amelynek a magassága a megadott szám! - Collatz-sejtés: Kérj be egy pozitív egész számot! Ha páros, oszd el 2-vel. Ha páratlan, szorozd meg 3-mal és adj hozzá 1-et. Ezt ismételd egy ciklusban addig, amíg az eredmény 1 nem lesz. Írasd ki a kapott számsorozatot és a lépések számát!
- Haladó szűrés listában: Generálj egy 20 elemű listát 1 és 100 közötti véletlenszámokkal (a
randommodul segítségével). Hozz létre belőle egy új listát, amely kizárólag azokat a számokat tartalmazza, amelyek 2-vel ÉS 3-mal is maradék nélkül oszthatók! - Lista megfordítása kézzel: Adott egy lista:
szamok = [1, 2, 3, 4, 5, 6, 7, 8, 9]. A beépített.reverse()metódus és a szeletelés ([::-1]) használata nélkül, egy ciklus segítségével fordítsd meg a lista elemeinek sorrendjét! - Statisztika: Adott egy heti hőmérsékleteket tartalmazó lista. Számold ki a heti átlagot, majd számold meg, hány napon volt az átlagnál melegebb, és határozd meg a legnagyobb ingadozást (a maximális és a minimális érték különbségét)!
- Leghosszabb szó: Kérj be egy teljes mondatot a felhasználótól. A
.split()metódus segítségével bontsd szavakra, majd egy algoritmus segítségével keresd meg és írasd ki a mondat leghosszabb szavát, valamint annak hosszát! - Buborékrendezés (Algoritmusok): Adott egy véletlenszerű számokat tartalmazó lista. Írd meg a buborékrendezés (Bubble Sort) algoritmusát két egymásba ágyazott ciklussal, amely növekvő sorrendbe rendezi az elemeket! A
.sort()metódust tilos használni! - Bináris keresés: Adott egy már sorba rendezett, 100 elemű lista. Írj egy algoritmust, amely a bináris keresés elvét alkalmazva (a listát mindig középen kettévágva) keres meg egy felhasználó által megadott számot! Ha megtalálta, írja ki az indexét, ha nem, írja ki, hogy nincs a listában.
- Gyakoriság vizsgálat: Adott egy szöveg:
"abracadabra". Szótár (dictionary) vagy halmaz (set) használata nélkül, kizárólag listákkal és ciklusokkal határozd meg, hogy melyik betű hányszor szerepel a szövegben! - Palindrom függvény: Írj egy
is_palindrom(szoveg)nevű függvényt, amely egy logikai (True/False) értékkel tér vissza attól függően, hogy a paraméterként kapott szöveg visszafelé olvasva is ugyanaz-e. A függvény hagyja figyelmen kívül a szóközöket és a kis/nagybetű különbségeket (pl. "Indul a görög aludni" -> True)! - Fibonacci sorozat: Írj egy függvényt, amely paraméterként vár egy
nszámot, és visszatér a Fibonacci-sorozatn-edik elemével! (A sorozat első két eleme 0 és 1, a többi elem mindig az előző kettő összege). - Változó argumentumok (
*args): Írj egystatisztika(*szamok)nevű függvényt, amely tetszőleges számú argumentumot képes fogadni. A függvény térjen vissza egy tuple-lel, amely három értéket tartalmaz: a kapott számok minimumát, maximumát és átlagát! - Halmazműveletek (Set): Adott két lista:
matekosok = ["Anna", "Béla", "Cecil", "Dénes"]ésfizikusok = ["Béla", "Dénes", "Elemér", "Fanni"]. Halmazműveletek segítségével írasd ki azokat a diákokat, akik csak matekra járnak, és azokat, akik mindkét tárgyat felvették! - Szótár alapú fordító: Készíts egy magyar-angol szótárat (dictionary) legalább 10 szóval. Kérj be a felhasználótól egy magyar mondatot. A program bontsa szavakra a mondatot, és a szótár alapján fordítsa le angolra. Ha egy szó nincs a szótárban, hagyja meg eredeti formájában!
- Adatok aggregálása: Adott egy lista, amely szótárakat tartalmaz eladásokról:
eladasok = [{"termek": "alma", "db": 5}, {"termek": "banán", "db": 2}, {"termek": "alma", "db": 3}]. Írj egy algoritmust, amely összesíti az azonos termékek eladásait egyetlen szótárba (pl.{"alma": 8, "banán": 2})! - Fájl beolvasás és feldolgozás: Hozz létre egy
eredmenyek.txtfájlt, amelyben soronként egy név és egy pontszám szerepel, pontosvesszővel elválasztva (pl.Kovács Péter;85). Írj programot, amely beolvassa a fájlt, kiszámolja a csoport átlagát, és kiírja a legmagasabb pontszámot elért diák nevét! - Hibakezelés és naplózás: Készíts egy végtelen
whileciklust, amely számokat kér be a felhasználótól, amíg be nem írja, hogy"vege". A beolvasott számokat fűzd hozzá egyszamok.txtfájlhoz ("a"mód). Használjtry-exceptblokkot aValueErrorelkapására: ha nem számot ír be, a program ne álljon le, hanem figyelmeztesse a felhasználót! - Objektumorientált Bankszámla: Hozz létre egy
Bankszamlanevű osztályt! A konstruktora fogadja a tulajdonos nevét és a kezdeti egyenleget. Készítsbefizet(osszeg)éskivesz(osszeg)metódusokat! Az utóbbi dobjon hibaüzenetet (vagy írja ki konzolra), ha a felhasználó több pénzt akar kivenni, mint amennyi az egyenlege! - Osztályok interakciója: Készíts egy
Diakosztályt (név, átlag) és egyOsztalyteremosztályt! AzOsztalyteremosztálynak legyen egy listája, amelyDiakobjektumokat tárol. Készíts metódust diák hozzáadására, és egyosztaly_atlaga()metódust, amely kiszámolja a teremben lévő diákok átlagának átlagát! - Dunder (Magic) metódusok: Készíts egy
Vektorosztályt, amely 2D-s koordinátákat tárol (x,y). Definiáld felül az__add__metódust úgy, hogy két Vektor objektumot a+jellel össze lehessen adni (az eredmény egy új Vektor legyen, amelynek x és y értékei a két eredeti vektor összegei)! -
Komplex Raktárkészlet: Építs egy konzolos raktárkezelő mini-alkalmazást! A program egy szótárban tárolja a termékek nevét és mennyiségét. Készíts egy menüt:
-
Új termék felvitele (vagy meglévő mennyiségének növelése),
-
Termék kiadása (hibakezeléssel, ha nincs elég raktáron),
-
Készlet listázása,
-
Készlet mentése fájlba,
-
Kilépés. A program addig fusson, amíg a kilépést nem választják.
-