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

Tartalomjegyzék

11 Függvények URL

11-00 Függvények - teszt URL

Feladat leírás:
def függvényNeve(): - függvényt, azaz alprogramot definiáló kulcsszó
def függvényNeve(): - a függvény neve, amellyel rá hivatkozva le tudjuk azt futtatni
def függvényNeve(arg1, arg2): - vesszővel elválasztott paraméterek, avagy argumentumok. A függvény által várt bejövő értékek függvényen belüli neve
global - a függvényen kívüli változók eléréséhez használt kulcsszó
return x - a függvény visszatérési értékének a megadása

Példák:
Egyszerű, szöveget kiíró függvény visszatérési érték nélkül
def kiírás():
 print('Szép napot!')
# És ahogy a függvényt meghívjuk, akár többször is:
kiírás(); kiírás()

Paramétert használó függvény
def kiiras(név):
 print(f'Szép napot {név}!')
# És ahogy a függvényt meghívjuk, akár többször is:
kiírás('Kamilla'); kiírás('Sándor')

A bejövő paraméter dupláját visszaadó függvény
def dupla(x):
 return x * 2
# És ahogy a függvényt meghívjuk:
y = dupla(3)
z = dupla(7)

Oldd meg az alábbi űrlap feladatait: 11 Függvények - teszt

11-01 Függvény - Páratlan URL

Feladat leírás:
Egy függvényt tesztelünk, amely egy egész számról mondja meg, hogy páratlan-e
Hozz létre külön mappában egy "11-01 Fuggveny - Paratlan.py" Python fájlt.
Írj egy függvényt "paratlan" néven, amely bool értéket ad vissza.
Bemenő paramétere egy egész szám.
True-t ad vissza, ha a bemenő paraméter páratlan. False-t ad vissza, ha páros.
Hibára fut, ha a bejövő paraméter nem szám.
A függvény teszteléséhez a főprogram kérjen be egy egész számot a felhasználótól.
A program kommunikációja a mintának megfelelően történjen.
Végeredmény minta (részlet):
11-01 Függvény - Páratlan-0
Végeredmény minta (részlet):
11-01 Függvény - Páratlan-1

11-02 Függvény - Szorzat URL

Feladat leírás:
Egy függvényt tesztelünk, amely két szám szorzatát adja vissza eredményül.
Hozz létre külön mappában egy "11-02 Fuggveny - Szorzat.py" Python fájlt.
Írj egy függvényt "szorzat" néven, amely két számot vár paraméterül és visszaadja a szorzatukat.
Ha nem számot adnak meg, fusson hibára!
Végeredmény minta (részlet):
11-02 Függvény - Szorzat

11-03 Függvény - Kisebb duplája URL

Feladat leírás:
Egy függvényt tesztelünk, amely két szám közül adja vissza a kisebb dupláját.
Hozz létre külön mappában egy "11-03 Fuggveny - Kisebb duplaja.py" Python fájlt.
Írj egy függvényt "kisebbDupla" néven, amely két számot kap paraméterül és visszaadja a kisebb szám dupláját.
Végeredmény minta (részlet):
11-03 Függvény - Kisebb duplája

11-04 Függvény - Magánhangzó URL

Feladat leírás:
Egy függvényt tesztelünk, amely egy karakterről állapítja meg, hogy magánhangzó-e.
Hozz létre külön mappában egy "11-04 Fuggveny - Maganhangzo.py" Python fájlt.
Írj egy függvényt "maganhangzo" néven, amely a bejövő betűről megállapítja, hogy az magánhangzó-e. Azaz True értékkel tér vissza, ha magánhangzó, különben False.
Végeredmény minta (részlet):
11-04 Függvény - Magánhangzó-0
Végeredmény minta (részlet):
11-04 Függvény - Magánhangzó-1

11-05 Függvény - Páros-páratlan kiírás URL

Feladat leírás:
Egy függvényt tesztelünk, amely egy egész szám alapján kiírja, hogy az páratlan-e.
Hozz létre külön mappában egy "11-05 Fuggveny - Paros-paratlan.py" Python fájlt.
Írj egy függvényt "parosParatlan" néven, amely a bejövő paraméter alapján kiírja, hogy az páros-e vagy páratlan. Pl. így: Ez a szám ... páros!
Végeredmény minta (részlet):
11-05 Függvény - Páros-páratlan kiírás-0
Végeredmény minta (részlet):
11-05 Függvény - Páros-páratlan kiírás-1

11-06 Függvény - Nagyobb tripla URL

Feladat leírás:
Egy függvényt tesztelünk, amely két szám közül adja vissza a nagyobb háromszorosát.
Hozz létre külön mappában egy "11-06 Fuggveny - Nagyobb tripla.py" Python fájlt.
Írj függvényt "nagyobbTripla" néven, amely visszaadja a két szám közül a nagyobb háromszorosát.
Végeredmény minta (részlet):
11-06 Függvény - Nagyobb tripla

11-07 Függvény - Egyszerű menü URL

Feladat leírás:
A program bekér egy szöveget és a választásod alapján kiír ezt-azt a szövegről. Üres szövegre leáll.
Hozz létre külön mappában egy "11-07 Fuggveny - egyszeru menu.py" Python fájlt.
Olvassunk be egy szöveget.
Kérdezzük meg a felhasználót, hogy mit szeretne:
a) Kiírjuk hány 'a' betű van a szövegben
b) Kiírjuk a szöveg hosszát
c) Kiírjuk a szöveg nagybetűs változatát

Addig ismételjük a fentebb írtakat, amíg üres szöveget nem ad meg a felhasználó.
Mind a három feladatot (a, b, c) saját külön függvényekkel oldjunk meg.
Végeredmény minta (részlet):
11-07 Függvény - Egyszerű menü

11-08 Függvény - Kör URL

Feladat leírás:
Egy kör sugarát kérjük be és kiírjuk a kerületét cm-ben és a területét cm²-ben.
Hozz létre külön mappában egy "11-08 Fuggveny - Kor.py" Python fájlt.
Kérjük be a felhasználótól egy kör sugarát, cm-ben értve.
Feltételezhetjük, hogy a felhasználó valóban számot ad meg, de az lehet tört szám is.
Írj két saját függvényt a kör adatainak a kiszámításához.

Az egyik függvény neve 'kerulet' legyen, bemenő paramétere a kör sugara cm-ben.
A függvény számolja ki a kör kerületét és írja is ki az eredményt a konzolra a minta szerint, cm-ben.

A másik függvény neve 'terulet' legyen, bemenő paramétere a kör sugara cm-ben.
A függvény számolja ki a kör területét és adja vissza az eredményt.
A szöveges, minta szerinti cm²-ben számolt kiírást a főprogramban hajtsuk végre.

Az eredményeket mindkét esetben 2 tizedesre kerekítsük.
Végeredmény minta (részlet):
11-08 Függvény - Kör

11-09 Függvény - Négyzet URL

Feladat leírás:
Egy négyzet oldalhosszát kérjük be és kiírjuk a kerületét cm-ben és a területét cm²-ben.
Hozz létre külön mappában egy "11-09 Fuggveny - Negyzet.py" Python fájlt.
Kérjük be a felhasználótól egy négyzet oldalhosszát, cm-ben értve.
Feltételezhetjük, hogy a felhasználó valóban számot ad meg, de az lehet tört szám is.
Írj két saját függvényt a négyzet adatainak a kiszámításához.

Az egyik függvény neve 'kerulet' legyen, bemenő paramétere a négyzet oldala cm-ben.
A függvény számolja ki a négyzet kerületét és írja is ki az eredményt a konzolra a minta szerint, cm-ben.

A másik függvény neve 'terulet' legyen, bemenő paramétere a négyzet oldalhossza cm-ben.
A függvény számolja ki a négyzet területét és adja vissza az eredményt.
A szöveges, minta szerinti cm²-ben számolt kiírást a főprogramban hajtsuk végre.

Az eredményeket mindkét esetben 2 tizedesre kerekítsük.
Végeredmény minta (részlet):
11-09 Függvény - Négyzet

11-10 Függvény - Egyenlő oldalú háromszög URL

Feladat leírás:
Egy egyenlő oldalú háromszög oldalhosszát kérjük be és kiírjuk a kerületét cm-ben és a területét cm²-ben.
Hozz létre külön mappában egy "11-10 Fuggveny - Haromszog.py" Python fájlt.
Kérjük be a felhasználótól egy egyenlő oldalú háromszög oldalhosszát, cm-ben értve.
Feltételezhetjük, hogy a felhasználó valóban számot ad meg, de az lehet tört szám is.
Írj két saját függvényt a egyenlő oldalú háromszög adatainak a kiszámításához.

Az egyik függvény neve 'kerulet' legyen, bemenő paramétere a egyenlő oldalú háromszög oldala cm-ben.
A függvény számolja ki a háromszög kerületét és írja is ki az eredményt a konzolra a minta szerint, cm-ben.

A másik függvény neve 'terulet' legyen, bemenő paramétere a háromszög oldalhossza cm-ben.
A függvény számolja ki a egyenlő oldalú háromszög területét és adja vissza az eredményt.
A szöveges, minta szerinti cm²-ben számolt kiírást a főprogramban hajtsuk végre.

Az eredményeket mindkét esetben 2 tizedesre kerekítsük.
Végeredmény minta (részlet):
11-10 Függvény - Egyenlő oldalú háromszög

11-11 Függvény - Prímek URL

Feladat leírás:
Egy szám-lista elemeiről állapítjuk meg, hogy prímek-e vagy a három hatványai.
Hozz létre külön mappában egy "11-11 Fuggveny - Primek.py" Python fájlt.
Adott egy egész számokat tartalmazó lista - lásd alább. Állapítsd meg minden egyes eleméről, hogy a három hatványa-e, vagy prím szám és írd ki a mintának megfelelően.
A prím osztók megtalálásához készíts egy függvényt "prim_osztok" néven, amelynek a bemenő paramétere egy egész szám, a visszatérési értéke pedig egy lista, amely tartalmazza a bejövő szám prím osztóit. Ha nincs prím osztója a bejövő számnak, akkor üres listát adjon vissza.
A számok listája:
lista = [123, 57, 8, 16, 29, 125, 81, 64, 127, 82, 729, 9]
Végeredmény minta (részlet):
11-11 Függvény - Prímek

11-12 Hőmérséklet adatok URL

Feladat leírás:
Budapest éves hőmérséklet statisztikáiból írunk ki adatokat.
Hozz létre külön mappában egy "11-12 Fuggveny - Homerseklet.py" Python fájlt.
Adott a BP_homerseklet.txt fájl, amely utf-8 kódolással tartalmazza Budapest éves hőmérsékleti adatait, pontosvesszőkkel elválasztva.
A fájl az alábbi fejlécet és adatokat tartalmazza: #ev;kozepho;maxho;maxho_nap;minho;minho_nap
Fejléc elemek magyarázata:
ev - évszám
kozepho - évi középhőmérséklet
maxho - a legmagasabb napi középhőmérséklet az évben
maxho_nap - a legmagasabb napi középhőmérséklet napja
minho - a legalacsonyabb napi középhőmérséklet az évben
minho_nap - a legalacsonyabb napi középhőmérséklet napja

1. feladat: Írjunk egy "beolvas" függvényt a fájl adatainak listába történő belvasására.
2. feladat: Ellenőrizzük, hogy minden év adata megvan-e a fájlban 1901-től 2020-ig (ez 120 adat).
Ha megvan minden adat, akkor írjuk ki, hogy: "Minden év adata megvan 1901-től 2020-ig."
Különben írjuk ki, hogy: "Hiányos a fájl, nincs meg minden adat 1901-től 2020-ig."
3. feladat: Írjuk ki azokat az éveket, amelyekben Karácsony napján (december 25-én) volt a leghidegebb.
4. feladat: Keressük meg azt az évet, amelyben a legnagyobb volt a minimális és maximális hőmérséklet közti különbség.

Az adatok forrása:
https://www.met.hu/eghajlat/magyarorszag_eghajlata/eghajlati_adatsorok/Budapest/adatok/eves_adatok/

A mellékelt fájlt innen töltheted le: BP_homerseklet.txt
Végeredmény minta (részlet):
11-12 Hőmérséklet adatok-0

11-13 Lista sorrend URL

Feladat leírás:
Beolvasunk 5 egész számot és e listáról írunk ki információkat.
Hozz létre külön mappában egy "11-13 Lista sorrend.py" Python fájlt.
Mindegyik alábbi feladathoz készítsünk saját függvényt.
A 2. feladattól kezdve a függvények bemenő paramétere a lista, visszatérési értékük pedig a kiíratandó teljes szöveges válasz a kérdésre.
1. Olvassunk be öt egész számot egy listába. Feltételezhetjük, hogy a felhasználó valóban csak egész számokat ad meg.
2. Írjuk ki a lista elemeit egy sorban, kötőjellel elválasztva, abban a sorrendben, ahogy azt a felhasználó megadta.
3. Írjuk ki a lista elemeit fordított sorrendben, egy sorban, kötőjellel elválasztva.
4. Írjuk ki, hányadik elem a legkisebb és mennyi az.
5. Írjuk ki, hányadik elem a legnagyobb és mennyi az.
6. Írjuk ki melyik elem áll a legközelebb a teljes lista átlagához és hogy az hányadik elem.

Végeredmény minta (részlet):
11-13 Lista sorrend

11-14 Függvényhívások URL

Feladat leírás:
Hozz létre egy "11-14 Fuggvenyhivasok.py" python fájlt.
Másold bele a mellékelt, tömörített "fuggvenyhivasok.py" fájl tartalmát.
Egészítsd ki a mellékelt programot az alábbiak szerint.
A program már tartalmaz három függvényt:
osztok(x) - A bejövő egész szám összes osztóját adja vissza egy listában
prim_osztok(x) - A bejövő egész szám prím osztóit adja vissza egy listában
kozos_osztok(x, y) - A bejövő két egész szám közös osztóit adja vissza egy listában

Egészítsd ki a programot úgy, hogy kérjen be a felhasználótól két egész számot.
A már meglévő függvényeket használva a mintának megfelelően
1. írd ki az első megadott szám összes osztóját.
2. írd ki a második megadott szám prím osztóit
3. írd ki a két megadott szám közös osztóit

A bejövő számokat nem kell ellenőrizni, biztosak lehetünk benne, hogy a felhasználó egész számokat ad meg.
Forrásfájlok (zip)
Végeredmény minta (részlet):
11-14 Függvényhívások

11-15 Python teszt URL

Feladat leírás:
Hozz létre egy "11-15 Python teszt.py" python fájlt.
Másold bele a mellékelt programot és egészítsd ki az alábbiak szerint.
A program már tartalmaz két függvényt:
feladat(feladatSzáma) - A függvény kiírja az adott sorszámú feladatot
ellenőrzés(feladatSzáma, válaszkód) - A függvény ellenőrzi, hogy az adott sorszámú feladatra beírt válasz helyes-e

Egészítsd ki a programot úgy, hogy kérdezze meg a felhasználótól, hány tesztkérdést szeretne megválaszolni.
A mintának megfelelően írja ki a tesztkérdést, olvassa be a felhasználó válaszát és írja ki, hogy helyes-e a válasz vagy helytelen.
A kérdések kiírásához és helyességük megállapításához használja a már meglévő függvényeket.
Forrásfájlok (zip)
Végeredmény minta (részlet):
11-15 Python teszt

11-16 Palindroma URL

Feladat leírás:
Egy beolvasott szövegről állapítjuk meg, hogy palindróma-e.
Palindroma az a szöveg, amely előröl és visszafele is ugyanaz. A szóközök és a kis és nagy betűk nem számítanak.
Hozz létre külön mappában egy "11-16 Palindroma.py" Python fájlt.
Írj egy függvényt "is_plaindrom" néven, amely bool értéket ad vissza. Bemenő paramétere egy szöveg.
True-t ad vissza, ha a bemenő szöveg palindróma és False-t ad vissza ha nem az.
A függvény teszteléséhez a főprogram kérjen be egy szöveget a felhasználótól és írja ki, hogy a szöveg palindróma vagy sem.
A program kommunikációja a mintának megfelelően történjen.
Végeredmény minta (részlet):
11-16 Palindroma-0
Végeredmény minta (részlet):
11-16 Palindroma-1

11-17 Bináris számok URL

Feladat leírás:
Egy pozitív egész számot alakítunk bináris számmá.
Hozz létre egy "11-17 Binaris szamok.py" Python fájlt.
Olvassunk be egy pozitív egész számot és írjuk ki a bináris alakját.
A beépített bin() függvényt nem használhatod!
Ehhez készítsünk egy decBin() függvényt, amelynek van egy bemenő paramétere és sztringesen adja vissza a bináris értékét.
A felhasználó biztosan egész számot ad meg, azt nem kell ellenőrizni.
A program kommunikációját a mintának megfelelően alakítsd.
Végeredmény minta (részlet):
11-17 Bináris számok-0
Végeredmény minta (részlet):
11-17 Bináris számok-1

11-18 Ismeretség URL

Feladat leírás:
A megadott évszám alapján állapítjuk meg mióta tart az ismeretség.
Hozz létre külön mappában egy "11-18 Ismeretseg.py" Python fájlt.
Kérjük be a felhasználótól a megismerkedés évszámát.
Feltételezhetjük, hogy a felhasználó pozitív egész számot, valódi évszámot ad meg.
Írj egy saját függvényt evekszama() néven, amely a bejövő évszám paraméterből kiszámolja, hogy hány éve tart az ismeretség.
A kiszámolt értéket a függvény adja vissza, és az eredményt a főprogramban írjuk ki.
A számításnál fixen számolhatunk azzal, hogy idén 2023 van.
Végeredmény minta (részlet):
11-18 Ismeretség-0
Végeredmény minta (részlet):
11-18 Ismeretség-1

11-19 Pontból jegy URL

Feladat leírás:
Pontszámokhoz rendelünk osztályzatot.
Hozz létre egy "11-19 Pontbol jegy.py" Python fájlt.
A program osztályozzon le egy maximálisan 100 pontos dolgozatot az 50, 65, 80, 90 ponthatárok szerint.
A határérték a jobb jegyhez tartozik. Ha a pontszám negatív vagy száznál nagyobb, akkor a program írja ki, hogy hibás az adat!
A megoldás során készíts egy "pontbolJegy" nevű függvényt, amely egy "pontszám" nevű bejövő paramétert fogad és a visszatérési értéke a pontszámnak megfelelő osztályzat az alábbiak szerint:
0 alatt és 100 felett írjuk ki, hogy hibás az érték
90 és felette 5
80 és felette 4
70 és felette 3
60 és felette 2
60-ig 1-es
A főprogramban kérd be a pontszámot, majd a megfelelő érdemjegyet a "pontbolJegy" függvény használatával határozd meg és írd ki.
A program kommunikációját a mintának megfelelően szövegezd.
Végeredmény minta (részlet):
11-19 Pontból jegy-0
Végeredmény minta (részlet):
11-19 Pontból jegy-1
Végeredmény minta (részlet):
11-19 Pontból jegy-2
Végeredmény minta (részlet):
11-19 Pontból jegy-3

11-20 Számrendszerek URL

Feladat leírás:
Számokat alakítunk át más számrendszerbe.
Hozz létre egy "11-20 Szamrendszerek.py" Python fájlt.
Kérdezd meg a felhasználót, hogy binárisról decimálisra, vagy fordítva szeretne átalakítást végezni.
Ezt követően olvass be egy számot és ellenőrizd, hogy a megadott számrendszernek megfelel-e a megadott érték.
Ha hibás, azt jelezd és kérd be újra a számot.
A megoldás során készítsünk egy decBin() függvényt amelynek van egy bemenő paramétere és sztringesen adja vissza a bináris értékét.
Továbbá egy binDec() függvényt amelynek van egy bemenő paramétere és egész számként adja vissza a decimális értékét.
A beépített bin() függvényt nem használhatod!
A program kommunikációját a mintának megfelelően alakítsd.
Végeredmény minta (részlet):
11-20 Számrendszerek-0
Végeredmény minta (részlet):
11-20 Számrendszerek-1
Végeredmény minta (részlet):
11-20 Számrendszerek-2
Végeredmény minta (részlet):
11-20 Számrendszerek-3

11-21 Egyesek URL

Feladat leírás:
Egy 0 és 255 közötti szám 8 bites bináris alakjának elején álló egyeseket számoljuk meg.
Hozz létre egy "11-21 Egyesek.py" Python fájlt.
Kérj be a felhasználótól egy 0 és 255 közötti egész számot. Ezt egy decBin() nevű saját függvény segítségével alakítsd 8 bites bináris számmá.
Írj egy oneCount() függvényt, amelynek bemenő paramétere bináris szám. A visszatérő értéke egy egész szám, amely azt adja meg, hogy hány egyes van a bináris szám elején.
Ezeket a függvényeket használva írd ki a főprogramban a konzolra, hogy hány egyes van a felhasználó által megadott szám 8 bites bináris alajának az elején.
Abban biztosak lehetünk, hogy a felhasználó jó decimális értéket ad meg, azt nem kell ellenőrizni.
A program kommunikációját a mintának megfelelően alakítsd.
Végeredmény minta (részlet):
11-21 Egyesek-0
Végeredmény minta (részlet):
11-21 Egyesek-1
Végeredmény minta (részlet):
11-21 Egyesek-2

11-22 Kerekített összeg URL

Feladat leírás:
Összegeket kerekítünk.
Hozz létre egy "11-22 Kerekitett osszeg.py" Python fájlt.
Kérj be a felhasználótól egy összeget. Biztosak lehetünk benne, hogy pozitív egész számot ad meg, azt nem kell ellenőrizni.
Az összeget kerekítsd lefelé százasokra és írd ki, majd ugyanezt százasra felfelé kerekítéssel is tedd meg.
Ha a megadott összeg százzal osztható, akkor a két érték természetesen azonos.
A kerekítésekhez írj saját függvényeket kerekFel() és kerekLe() néven. Mindkét függvénynek egy bemenő paramtere van, egy egész szám, és a visszatérési érték a kerekített érték.
A program kommunikációját a mintának megfelelően szövegezd.
Végeredmény minta (részlet):
11-22 Kerekített összeg-0
Végeredmény minta (részlet):
11-22 Kerekített összeg-1

11-23 Kassza URL

Feladat leírás:
Egy bolt kasszájának kezelését segítjük.
Hozz létre egy "11-23 Kassza.py" Python fájlt.
Egy bolt.txt nevű, utf-8 kódolású szöveges fájlban tároljuk a termékek árlistáját: Termékkód; Megnevezés; Ár
A fájl tartalmaz fejléc sort, az első sorai így néznek ki:
Termékkód;Megnevezés;Fogyasztói ár
001;Kávé;250
002;Tea;200
003;Kenyér;300

A tárolt termékek kódja egész szám, és ha kevesebb mint három jegyű, akkor az elején kiegészül nullákkal.
Kérd be a felhasználótól a termék kódját. Ha háromnál kevesebb karaktert ad meg, akkor azt egészítsük ki balról nullákkal.
Kérd be a darabszámot. Biztosak lehetünk benne, hogy a felhasználó pozitív egész számot ad meg, azt nem kell ellenőrizni.
Írd ki, hogy mennyi a fizetendő összeg. Ha a kód nem szerepel a listában, akkor írd ki, hogy nincs ilyen termék és érjen véget a program.
Ezután kérdezd meg mennyit fizetett a vevő és írd ki mennyi a visszajáró. A befizetett összeg biztosan pozitív egész szám, azt nem kell ellenőrizni.
Ha kevesebbet fizetett a vevő, akkor írjuk ki, mennyit kell még fizetnie.

A megvalósítás során az adatok beolvasására használj saját függvényt beolvas() néven. Bemenő paramétere a fájl neve, visszatérő értéke pedig egy szótár (dictionary), amelynek kulcsai a termékek kódjai, az értékek pedig egy listában a megnevezés és az ár.
Pl.: árlista = {'001': ['Kávé', 250], '002': ['Tea', 200], '003': ['Kenyér', 300]}

A program kommunikációját a mintának megfelelően szövegezd.
A mellékelt fájlt innen töltheted le: bolt.txt
Végeredmény minta (részlet):
11-23 Kassza-0
Végeredmény minta (részlet):
11-23 Kassza-2
Végeredmény minta (részlet):
11-23 Kassza-3
Ugrás az elejére