You are on page 1of 66

Bevezetés a

programozásba
DIGITÁLIS KULTÚRA 10.
Műveletek szövegekkel
Kisbetűs, nagybetűs
név = "Zsákos Bilbó"
print(név.lower()) # zsákos bilbó
print(név.upper()) # ZSÁKOS BILBÓ
print(név.title()) # Zsákos Bilbó

print(név.islower()) # False
print(név.istitle()) # True

név = "Zsákos Bilbó"


print(név.lower()) # zsákos bilbó
# A változó eredeti értéke nem módosul!
print(név) # Zsákos Bilbó
Szöveg feldarabolása
• Ha egy szöveget adott karakter mentén feldarabolunk, egy listát kapunk

név = "Zsákos Bilbó"


darabok = név.split(' ')
print(darabok) # ['Zsákos', 'Bilbó']
Tartalmaz-e a szöveg egy másikat?

állítás = "A tej nagyon egészséges"


if "tej" in állítás:
print("Az állítás igaz.")
Csere a szövegben

szöveg = "A kóla jót tesz a fogaknak"


igazság = szöveg.replace("kóla", "tej")

# ezek láncolhatók is
teljes_igazság = szöveg.replace("kóla", "tej").replace("fogaknak", "fogaknak és a léleknek").upper()
Szöveg mint lista
• A lista elemeire a 0-tól induló sorszámukkal (indexükkel) hivatkozhatunk
• Ugyanez működik szövegekkel (karakterláncokkal, stringekkel) is!

lista = ["J", "e", "d", "l", "i", "k"]


print(lista[1]) # e

szöveg = "Jedlik"
print(szöveg[1]) # e

szöveg = "Jedlik"
print(szöveg[0:3]) # Jed
Azért vannak különbségek is
• Módosítani például nem lehet a stringeket karakterenként, tehát az alábbi nem működik

szöveg = "Jedlik"
szöveg[3] = "x"

szöveg[3] = "x"
TypeError: 'str' object does not support item assignment
Mikor szidja le a program a felhasználót?

mondat = input('Írj ide egy mondatot! ')


if mondat[-1] != '!' and mondat[-1] != '?' and mondat[-1] != '.':
print('Hát ejnye!')
else:
print('Igazán gyönyörű mondat!')
Feladatok
1. Írj egy programot, ami bekér egy szót a felhasználótól, és kiírja a konzolra a visszafelé
írott változatát!
2. A palindrom olyan szöveg, aminek betűit visszafelé olvasva is ugyanazt kapjuk.
Például:
• Anni tejet inna
• A pipitéri rétipipa
• A példákból látható, hogy az ellenőrzésnél a kis- és nagybetűk nem különböznek, és
betűk tagolása (szóközök) nem feltétlenül szimmetrikus.
• Írj programot, ami eldönti, hogy egy szöveg palindrom-e!
Az eredményt írd ki a képernyőre!
Feladatok
3. A tehenek a nagy patájukkal nehezen gépelnek. A tehénkarácsony meghívóját elég nehéz nekik
megírni.
Írj egy programot, ami bekér a tehenektől egy szöveget, és megpróbálja kijavítani az esetleges
hibákat benne:
• Ha az első betű nem nagy, naggyá teszi
• Az összes többi betűt kisbetűssé teszi
• Eltávolítja a szövegből az összes számot és speciális karaktert, kivéve a pontot és a vesszőt
• Ha a mondat végén nincs pont, odatesz egyet

• A végeredményben kapott szöveget írd ki a képernyőre!


• Példa:
Bemenet: kEDVES cso0rdatársak, hozzaTOK magatokkal21 tejet a bulira
Kimenet: Kedves csordatársak, hozzatok magatokkal tejet a bulira.
Feladatok
4. Kérj be a felhasználótól egy szöveget! Az első karakter további előfordulásait cseréld ki
a szövegben $ jelre! (De az első karakter maradjon meg.)
Például: restart -> resta$t
5. Kérj be a felhasználótól egy szöveget, majd a 3-mal osztható sorszámú karaktereket
helyettesítsd X-szel!
6. Kérj be a felhasználótól egy szöveget, és írd ki a szavakat fordított sorrendben! (De a
szavakon belül a betűk sorrendje ne változzon!)
7. Írj programot, ami a bekért szövegben megszámolja és eltávolítja a magánhangzókat,
és kiírja a darabszámot és az eredményként kapott szöveget!
8. Írj programot, ami megszámolja, hogy a bekért szövegben hányszor fordul elő, hogy
egymás után két karakter ugyanaz, majd ezeket a karaktereket egy kötőjellel
helyettesíti.
További feladatok…
9. Kérj be egy közmondást a felhasználótól!
a) Számold meg, hogy hány karakterből áll, de a szóközöket ne számold bele!
b) Alakítsd nagybetűssé a szöveg felét! Ha páratlan számú karakterből áll, akkor egyel többet
nagybetűsíts!
c) Alakítsd át minden szó első és utolsó karakterét nagybetűssé!
d) Kérj be egy számot is! Távolítsd el a szövegből a számadik karaktert!
e) Ellenőrizd, hogy a szöveg tartalmaz-e betűkön, szóközön és számokon kívül más karaktert is! Ha igen,
add meg hányat!
f) Ellenőrizd, hogy a szöveg tartalmaz-e számokat! Ha igen, add meg, hányat!

10. Kérj be egy szöveget a felhasználótól! Ellenőrizd, hogy az összes magyar ékezetes
karaktert tartalmazza-e a beírt szöveg! A kis-nagybetűk nem számítanak.
• Két szép szűzlány őrült írót nyúz
• Árvíztűrő tükörfúrógép
Eljárások, függvények
Eljárás?
• Összetettebb feladatoknál sokszor előfordul, hogy egy műveletsort több helyen is végre
kell hajtanunk
• Ilyenkor érdemes lehet a programon belül egy elkülönült programrészt (eljárást) írnunk,
amit később újra és újra elő tudunk venni
• Előfordul az is, hogy a program egy jól elkülöníthető egységét akkor is külön eljárásba
írjuk, ha csak egyszer használjuk – mert így könnyebben olvasható a program
Eljárás példa
• Egy programon belül több részfeladatot oldunk meg. Ezeket 12 db alsóvonás karakterből
álló vonallal szeretnénk elválasztani egymástól. Ilyenkor például használhatunk eljárást.

def elválasztó(): Ez itt az eljárás definíciója – itt adjuk meg, hogy mi történjen,
print("____________") de a Python itt nem hajtja végre amit írjunk, csak figyel

# ... ide jönne az 1. feladatrész...


elválasztó()
Itt „indítjuk el” a fent definiált eljárást.
Mindkét helyre kiírja a 12 db vonalat.
# ... ide jönne 2. feladatrész ...
elválasztó() Ezt úgy szokás mondani, hogy meghívjuk
az eljárást.
Miért kellenek a zárójelek?
• Az eljárás definíciójánál és meghívásakor is zárójelpárt írtunk a neve után
• Ebbe a zárójelbe lehet írni az esetleges paramétereket
• A paraméterek olyan adatok, amik az eljárás működéséhez szükségesek

• Például, ha nem mindig 12 db alsóvonást szeretnénk írni, hanem változó mennyiségűt,


akkor ezt az adatot (a vonalak számát) paraméterként is kezelhetjük
Példa paraméterrel
A zárójelben lévő első paramétert elnevezzük darabnak.
Fontos, hogy ez a darab nevű változó csak az eljáráson belül létezik.
def elválasztó(darab):
print("_" * darab)

# ... ide jönne az 1. feladatrész...


elválasztó(12)
Ebben az esetben a darab változóba 12 kerül

# ... ide jönne 2. feladatrész ...


elválasztó(18)

Itt viszont 18 lesz a darab változó értéke az eljáráson belül


Több paraméter
• Természetesen egy eljárásnak több paramétere is lehet
• Ebben az esetben vesszővel választjuk el őket egymástól
• Ugyanabban a sorrendben kell őket megadni a meghíváskor mint ahogy a definícióban
megadtuk őket!

• Ha például azt is változtatni szeretnénk, hogy milyen karakter legyen az elválasztó…


Példa több paraméterrel

def elválasztó(darab, karakter):


print(karakter * darab)

# ... ide jönne az 1. feladatrész...


elválasztó(12, "_")

# ... ide jönne 2. feladatrész ...


elválasztó(18, ".")
Függvények
• Vegyük a következő példát: írjunk egy eljárást, ami paraméterként kap egy számot, és
hozzáad kettőt
• Ezt kétféleképpen is megoldhatjuk – mi a különbség a két kód között?

def pluszkettő(szám): def pluszkettő(szám):


eredmény = szám + 2 return szám + 2
print(f"Az eredmény: {eredmény}")
eredmény = pluszkettő(2)
pluszkettő(2) print(f"Az eredmény: {eredmény}")

Ez egy eljárás Ez egy függvény


Függvények
• A függvények általában nem írnak ki semmit a képernyőre, hanem a számításaik
eredményét „visszaküldik” a meghívásuk helyére
• Ezt visszatérési értéknek nevezzük
• A visszatérési értékkel tovább tudunk számolni a meghívás helyén, pl. elmenthetjük azt
egy változóba

def pluszkettő(szám):
return szám + 2

eredmény = pluszkettő(2)
print(f"Az eredmény: {eredmény}")
Változók az eljárásokban
• Az eljárásokban (és függvényekben) általában olvashatjuk a főprogram változóit, de
nem módosíthatjuk őket
• Ha beállítjuk egy változó értékét az eljáráson belül, akkor az a változó onnantól egy új
változóként működik, ami csak az eljáráson belül létezik, akkor is, ha ugyanaz a neve
mint a főprogram egyik változójának

def nagybetűs(): def nagybetűs():


print(szöveg) szöveg = "JEDLIK"

szöveg = "jedlik" szöveg = "jedlik"


nagybetűs() # jedlik nagybetűs()
print(szöveg) # jedlik
Feladatok
1. Írjuk meg azt az eljárást, amely a számára átadott, literben kifejezett térfogatot átváltja
akóba, és az eredményt képernyőre írja! Egy akó 58,6 liter.
Hívd meg az eljárást a főprogramban, hogy kiderüljön, 999 liter hány akó!
2. Írjunk egy olyan programot, ami a felhasználó által beírt városokat egy listába gyűjti,
majd átadja a listát egy hány_főváros nevű függvénynek.
A függvény dolga, hogy megszámolja és visszatérési értékben megadja, hány európai
főváros van a beírt városok között. A fővárosok listáját kódold bele a függvénybe!
A) Írd meg a függvényt, és teszteld:
hány_főváros(['Budapest', 'Krakkó', 'Pozsony', 'Bukarest', 'Salzburg'])

B) Írd meg a főprogramot, ami bekéri a felhasználótól a városokat, majd meghívja a


függvényt!
Feladatok
3. Írjunk olyan eljárást, amely egy paraméterként kapott szóról eldönti, hogy
magánhangzóval vagy mássalhangzóval kezdődik, és a döntését képernyőre írja!
a) Hogyan tudjuk egy változóban tárolt szó első betűjét megkapni?
b) Meg kell vizsgálnunk, hogy a megkapott első betű benne van-e egy listában. A mássalhangzókat vagy a
magánhangzókat érdemes listába gyűjtenünk?
4. Írjunk olyan függvényt, amely egy nevet kapva paraméterként visszaadja a névből
képzett monogramot!
Segítség: az index() fv. megadja a paraméterben megadott karakter első
előfordulásának helyét. (Listával is működik)
szóköz_helye = név.index(' ')

Bónusz: oldd meg, hogy a kettős mássalhangzókat is megfelelően kezelje a program!


Feladatok
5. Írjunk angol megszólítást előállító függvényt! A
függvény paramétere egy név és egy évszám. Ha a név
Kate, az évszám pedig legfeljebb tizenhét, akkor a
megszólítás tegeződős: „Hi Kate”. Ha az évszám
nagyobb tizenhétnél, akkor a függvény névlista alapján
dönti el, hogy a név férfi vagy női, és a „Dear Mr.
Smith” vagy a „Dear Ms. Smith” formát ölti a
megszólítás.
a) Írjuk meg a függvényt úgy, hogy csak egy tagból álló nevet vár!
b) Ha a fentiek alapján nem adnánk vissza semmit, akkor adjunk
vissza olyan üzenetet, ami elmondja, hogy miért nem adtunk
vissza semmi értelmeset!
c) Módosítsuk úgy a függvényt, hogy két tagból álló nevet kezeljen,
a fiatalokat a keresztnevükön, az idősebbeket a vezetéknevükön
megszólítva!
Feladatok
6. Írunk versgenerátort! A versek sorai mindig egy jelzőből, egy tárgyból, egy
állítmányból, valamint mondat végi írásjelből állnak („Nyekergő ablakokat dobálunk!”,
„Gömbölyű kútkávát eszünk?!”)
a) Írjunk meg egy olyan, verssor() nevű, paraméter nélküli függvényt, amely egy ilyen verssort ad vissza, a
mondat négy részét négy listából véletlenszerűen válogatva!
b) Ezt a függvényt hívja egy másik, versszak() nevű függvény. A versszak() paramétere egy szám, ami
megadja, hogy hány sorból álljon a versszak. Ez a függvény a teljes versszakot adja vissza.
c) Az utolsó függvényünk neve: vers(). Az első paramétere a versszakok számát megadó szám, a második a
verssorok száma versszakonként, visszatérési értéke a teljes vers.
d) A verseink túlcsorduló érzelmekről tesznek tanúbizonyságot, legalábbis az írásjelek alapján. Hogyan
tudjuk nagyon egyszerűen elérni, hogy a mondatok végére gyakrabban kerüljön pont?
Típusalgoritmusok
AVAGY PROGRAMOZÁSI TÉTELEK
Összegzés, átlagolás
• Egy bolt mai eladásainak végösszegei találhatók a listában.
Mennyi volt a bolt bevétele ma?

bevételek = [1,5,2,3,4]

összes = 0
for bevétel in bevételek:
összes += bevétel

print(f"A napi összebevétel: {összes}")


Feladat - összegzés
• A róka libát lop a faluból. A libák tömegét egy listában adjuk meg. A farkas a dűlőútnál
várj a rókát, és a három kilónál nagyobb libákat elveszi – a piciket nagylelkűen otthagyja
a rókának.

• Hány kiló libát ehet meg a róka?


Eldöntés
• Volt-e öt forint értékű vásárlás a boltban?

bevételek = [1,5,2,3,4]
vanilyen = False
for bevétel in bevételek:
if bevétel == 5:
vanilyen = True
break

if vanilyen:
print("Van ötforintos bevétel")
Feladat - eldöntés
• Az előző feladatot folytatva: előfordult-e olyan, hogy a róka kisebb libát hozott, mint az
előző napon?
Kiválasztás
• Tudjuk, hogy van 5 forint értékű vásárlás, de melyik az?

bevételek = [1,5,2,3,4]
holvan = None
for index in range(len(bevételek)):
if bevételek[index] == 5:
holvan = index
break

print(f"Az első ötforintos a(z) {holvan}–es számú vásárlás volt.")


Feladat - kiválasztás
• Hányadik napon sikerült a rókának először legalább háromkilós libát lopnia?
Keresés
• Van-e ötforintos vásárlás, és ha van, hányadik?
(Az eldöntés és a kiválasztás egybeépítése)
bevételek = [1,5,2,3,4]
vanilyen = False
holvan = None

for index in range(len(bevételek)):


if bevételek[index] == 5:
vanilyen = True
holvan = index
break
if vanilyen:
print(f"Az első ötforintos a(z) {holvan}–es számú vásárlás volt.")
else:
print("Nem volt ötforintos fuvar")
Feladat - keresés
• Melyik a róka első, legalább háromkilós libája?
Megszámlálás
• Hány darab ötforintos vásárlás volt a boltban?

bevételek = [1,5,2,3,4]
számláló = 0

for bevétel in bevételek:


if bevétel == 5:
számláló += 1

print(f"{számláló} db ötforintos vásárlás volt.")


Feladat - megszámlálás
• A farkas ugyebár a három kilónál nehezebb libákat veszi el a rókától. Hány libát tarthat
meg a róka?
Minimum- és maximumkiválasztás
• Mekkora a legkisebb/legnagyobb bevétel a listában?

bevételek = [1,5,2,3,4]
max = 0

for bevétel in bevételek:


if bevétel > max:
max = bevétel

print(f"{max} a legnagyobb bevétel a listában.")


Feladat – minimum-/maximumkiválasztás
• Mekkora a legkisebb liba, amit a farkas elvesz a rókától, ha volt ilyen egyáltalán?
Feladatok
1. Egy listában tároljuk, hogy egy londoni pincér mekkora összegeket helyezett el a
pénztárcájában az elmúlt órában. Amikor kivett pénzt, azt negatív érték jelzi.
A lista: [3, 8, 10, 19.35, -6, 5.1, 9, 20]

a) Volt-e olyan, hogy a pincér vásárolt valamit, vagy mindig csak neki fizettek?
b) Ha az óra elején üres a pénztárca, mennyi pénz van benne az óra végén?
c) Hány alkalommal kapott pennyt is, nem csak fontot?
d) Hány pennyt kapott összesen a pincér?
e) Hány esetben kapott legalább 5 fontot a pincér?
f) Mekkora volt a legnagyobb összeg, amit fizettek a pincérnek?
g) Ha volt olyan vendég, aki 10 fontnál többet fizetett, akkor mondjuk meg, hogy hányadik vendég volt az!
Feladatok
2. Állítsunk elő egy ezer és tízezer közötti egész számokat tartalmazó, húszelemű listát! A
lista elemei azoknak a járműveknek a tömegét adják meg, amiket ma egy komphajó
átvitt a folyón. Nehéznek számítanak a 9300 kilónál nehezebb járművek.
Írjunk programot, ami válaszol a következő kérdésekre:

a) Volt-e olyan jármű ma a hajón, ami nehéznek számít? Írjuk ki, ha volt ilyen!
b) Hány ilyen jármű volt?
c) Hány kiló járművet vitt át a komp ma összesen?
d) Mennyi a ma átvitt, nehéznek számító járművek össztömege?
Feladatok
3. A következő feladatok egy mondat szavaiból képzett listára vonatkoznak.
Például: ['Én', 'elmentem', 'a', 'vásárba', 'fél', 'pénzen.']

a) Hány szóból áll a mondat?


b) Hány betűs a legrövidebb szó?
c) Van-e a mondatban olyan szó, amely írásjellel végződik?
d) Hányadik szó a „fél”?
e) Van-e a mondatban nagy kezdőbetűs szó, és ha igen, akkor hol?
Listákat tartalmazó lista
Listákat tartalmazó lista
• Avagy kétdimenziós lista

• Nézzük egy vonósnégyes jelenléti ívét


• Minden „kis” lista egy-egy zenész jelenlétét mutatja, a nagy lista pedig az egész
zenekarét

Egyik hegedűs
jelenléti = [[1, 1, 1, 1, 1], Másik hegedűs
[1, 1, 1, 1, 0],
Brácsás
[1, 1, 0, 0, 0],
Csellós
[0, 1, 1, 1, 1]]
Kétdimenziós listák bejárása
• Bejáráskor két ciklus kell – az első, „külső” ciklus az egyes zenészek heti jelenléti ívein
halad végig, a második az adott zenész jelenléti ívének egyes napjain

for vonós in jelenléti:


for nap in vonós:
if nap == 1:
print("itt")
else:
print("otthon")
Típusalgoritmusok kétdimenziós listákban
1. A zenészek a közeli kifőzdében szoktak ebédelni. Ismerik őket, úgyhogy hét közben csak
felírják a fogyasztott adagok számát, és péntekenként fizetik az egész heti számlát.
Hány adagot fizetnek ezen a pénteken?

a) 1. megoldás: számold meg, hány egyes van a „táblázatban”!


b) 2. megoldás: add össze az egyeseket!
Típusalgoritmusok kétdimenziós listákban
2. Melyik zenész volt a legtöbbet jelen a héten? Melyik a legkevesebbet?
A zenészeket jobb híján a sorszámukkal azonosítjuk.

3. Volt olyan zenész, aki mindig jelen volt?

4. Írjuk ki, ha volt olyan nap amikor mindenki jelen volt a próbán!
Most egy „oszlop” értékeit kell összeadnunk.
Objektumok adatai a listában
• A programjaink a későbbiekben – és tulajdonképpen sokszor eddig is – objektumokkal
dolgoztak: egy-egy zenész, árucikk, tanuló stb. adatait tároltuk el és dolgoztuk fel.
• Most ez méginkább nyilvánvaló lesz: egy osztály tanulóinak adatait fogjuk eltárolni egy
2D-listában.
• Egy-egy „kis” lista egy tanuló tulajdonságait tárolja: név, nem, kor, e-mail-cím

osztály = [
["Noémi", "l", 15, "noemi@jedlik.hu"],
["Dezső", "f", 17, "dezso@jedlik.hu"],
["Gizi", "l", 16, "gizi@gmail.com"],
["Edömér", "f", 16, "edi@jedlik.hu"]
]
Feladatok objektumokkal
1. Írjuk ki az osztály névsorát! Írjuk ki minden név mellé az e-mail-címét is!

2. Mennyi az osztály átlagéletkora?

3. A lányok vannak többen, vagy a fiúk?

4. Kérjünk be egy nevet a felhasználótól, és válaszoljunk a megfelelő ember e-mail-


címével!
Szótárak
Szótár
1. Írjunk egy egyszerű magyar-angol szótárat!
a) Készítsünk egy szótáraz() nevű függvényt! Paraméterként kapjon egy magyar szót!
b) A benne található 2D-listában tároljunk el a szótár tartalmát:

szótár = [
["nagy", "big"], ["pici", "tiny"], ["én", "I"],
["foci", "soccer"], ["ott", "there"],
["szarvas", "deer"], ["soha", "never"]
]

c) Keressük ki a paraméterként kapott magyar szót, és adjuk vissza az angol megfelelőjét! Ha nincs ilyen szó,
akkor adjuk vissza a „Nincs ilyen szó a szótárban.” szöveget!
d) A főprogramban írjunk egy ciklust, ami addig kérdez új szót a felhasználótól, amíg az üres szót nem ad meg!
Minden beírt szó után írjuk ki az angol megfelelőjét az előbb készített függvény használatával, aztán
kérdezzük a következő szót!
A szótár adattípus
2. Másoljuk le az előző programot, de most a szótár változót módosítsuk így:
szótár = {"nagy": "big", "pici": "tiny", "én": "I",
"foci": "soccer", "ott": "there",
"szarvas": "deer", "soha": "never"}

• Figyeljük meg, hogy most nincsenek kis listák, sőt, egy lista sincs – kapcsos zárójeleket
használtunk
• Ez a szótár adattípus
• A szótár adattípus kulcs-érték párok tárolására alkalmas
• Ilyen kulcs-érték pár a „nagy”: „big”  a nagy a kulcs, a hozzá tartozó érték a big
A szótár adattípus
szótár = {"nagy": "big", "pici": "tiny", "én": "I",
"foci": "soccer", "ott": "there",
"szarvas": "deer", "soha": "never"}

• A szótár és a 2D-lista közötti legfontosabb különbség, hogy egy szó kikeresése szótárral
már csak ennyiből áll:
print(szótár['nagy'])

• Módosítsuk a szótár programunk másolatát úgy, hogy szótárt használjon!


Probléma: nem létező szó
• Ha egy olyan szót próbálunk kiolvasni a szótárból, ami nem szerepel benne, hibát
kapunk
• Ennek kiküszöbölésére használhatjuk a get() függvényt

return szótár.get("nagy", "Nincs ilyen szó a szótárban")

Ezt keresi a Ezt adja vissza, ha nem


szótárban szerepelt a szó a
szótárban

• Írjuk át a szótár programot, hogy a get() függvényt használja!


Szótár bejárása
• A szótár adattípusban akkor tudunk ilyen egyszerűen keresni, ha a kulcsot ismerjük
• Fordított esetben viszont már be kell járnunk a szótárat egy ciklussal
• A szótár bejárására a következő ciklust használhatjuk:

for kulcs, érték in szótár.items():

Most két ciklusváltozónk is lett: Nem egyszerűen a szótár nevét


az egyikbe az elem kulcsa, írtuk be, hanem van még utána
a másikba az értéke kerül egy .items() is!

• Próbáljuk ki ezt úgy, hogy kiírjuk a szótárunk teljes tartalmát egy ciklussal!
A szótár adattípus – tudnivalók
• A szótár kulcsai között nem lehet két azonos! Az alábbi szótárban csak egy Réka marad,
aki 17 éves lesz

osztály = {"Réka": 16, "Réka": 17}

• A szótár kulcsainak listája: list(osztály.keys())


• A szótár értékeinek listája: list(osztály.values())
• Mindkettő bejárható ciklussal, és használható rajtuk az in operátor is
• Egy létező szótárba új érték beillesztése: osztály['Gizi'] = 15
• Egy kulcs törlése: del osztály['Réka']
Osztálytagok a szótárban
• Természetesen nem csak szó szerint vett szótárat lehet szótár adattípusban tárolni
• A korábbi, osztály tagjait 2D-listában tároló programot írjuk most meg úgy, hogy szótárat
használunk!
• A végcél az, hogy Dezső korát így tudjuk lekérdezni:

osztály["Dezső"]["kor"]
Osztály szótárban – 1. lépés
• Az egyes emberek adatai egy szótárban lesznek
• Ezeket a szótárakat pedig egy lista fogja össze, ez jelképezni az osztályt

• Első lépésben alakítsuk ki a szótárat úgy, hogy minden tulajdonságnak beszédes neve
legyen:

osztály = [
{"név": "Noémi", "nem": "l", "kor": 15},
{"név": "Dezső", "nem": "f", "kor": 17},
{"név": "Gizi", "nem": "l", "kor": 16},
{"név": "Edömér", "nem": "f", "kor": 16}
]
Osztály szótárban – 1. lépés
osztály = [
{"név": "Noémi", "nem": "l", "kor": 15},
{"név": "Dezső", "nem": "f", "kor": 17},
{"név": "Gizi", "nem": "l", "kor": 16},
{"név": "Edömér", "nem": "f", "kor": 16}
]
• Most, ha tudjuk, hogy Dezső a második a listában, akkor így tudjuk elérni a korát:
osztály[1]["kor"]

• Ha viszont nem tudjuk, hogy hányadik a listában, akkor ciklussal meg kell keresnünk, és
ez nem ideális
Osztály szótárban – 2. lépés
• Alakítsuk át ismét az adatszerkezetet!
• Legyen az egész osztály egy szótár: a kulcs a név, és a személy adatait tartalmazó szótár
az érték
osztály = {
"Noémi": {"nem": "l", "kor": 15},
"Dezső": {"nem": "f", "kor": 17},
"Gizi": {"nem": "l", "kor": 16},
"Edömér": {"nem": "f", "kor": 16}
}
• Így most már használhatjuk a vágyott formát Dezső korának eléréséhez:

osztály["Dezső"]["kor"]
Feladatok
• Az előzőekben elkészült feladat adatszerkezetével oldjuk meg a következő feladatokat
1. Mennyi az osztály átlagéletkora?
2. A lányok vannak többen, vagy a fiúk?
Feladatok
3. Rendelkezésünkre áll egy bolthálózat három boltjának ezer forintban kifejezett
bevétele az elmúlt öt napból – ezt tartalmazza a táblázat.
Készíts adatszerkezetet a táblázatból és oldd meg az alábbi Bp Pécs Tököl
feladatokat: H 130 29 133
K 156 15 132
a) Melyik boltnak volt a legnagyobb bevétele az elmúlt hét napban?
Sze 231 210 182
b) Melyik boltnak volt a legnagyobb a hétfői bevétele?
c) Mennyi volt a bolthálózat bevétele a pénteki napon? Cs 112 11 121
d) Volt-e olyan nap, amelyiken a bolthálózat bevétele elérte a P 96 191 148
hatszázezer forintot?
Feladatok
4. Rendelkezésünkre áll néhány ország ezer főben mért népessége (a régebbi adatok az
akkor azon a területen élőkre vonatkoznak)
Ország Évszám
a) Melyik „országnak” volt a legnagyobb a népessége 0 1000 1500 2000
időszámításunk kezdetekor? Franciaország 5000 6500 15000 58805
b) Melyik az az „ország”, ahol találunk olyan évet,
amelyben az előző adathoz képest alacsonyabb Németország 3000 3500 12000 82029
a népesség? Olaszország 7000 5000 1000 57592
A megoldáshoz készíts egy olyan függvényt,
ami megmondja egy paraméterben kapott listáról, Nagy-Britannia 800 2000 3942 59237
hogy van-e benne csökkenés!
c) Melyik „országnak” hányszorosára nőtt a népessége
a megfigyelt két évezred alatt?
Feladatok
5. A táblázat egy csokiautomata néhány rekeszének adatait tartalmazza.
Tárold el az adatokat egy megfelelő
adatszerkezetben, és készíts programot, ami
válaszol az alábbi kérdésekre: Rekesz száma Darabszám Egységár
1 8 84
a) Összesen mennyi csoki van az automatában? 2 4 123
b) Mennyi csoki van benne a legdrágább fajtából? 3 8 83
c) Melyik rekesz képviseli a legnagyobb értéket? 4 14 129
d) Kérj be egy keretösszeget a felhasználótól,
és listázd ki, hogy melyik rekeszből hány darab csokit tud vásárolni! Figyelj rá, hogy ne kínálj fel több
csokit, mint amennyi a rekeszben van!
A 10. osztályos
tananyag vége

You might also like