Professional Documents
Culture Documents
Python Programozás 10
Python Programozás 10
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
# 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!
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?
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
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
bevételek = [1,5,2,3,4]
összes = 0
for bevétel in bevételek:
összes += bevétel
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
bevételek = [1,5,2,3,4]
számláló = 0
bevételek = [1,5,2,3,4]
max = 0
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.']
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
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!
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'])
• 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["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