Informatika2-2015/Eloadas 1 Python-1 Fuggveny Hibakereses
46. sor: | 46. sor: | ||
{| class="wikitable" | {| class="wikitable" | ||
− | |<python># Függvény, ami a lista minden elemét négyzetre emeli | + | |<python># Függvény, ami a lista minden |
+ | # elemét négyzetre emeli | ||
def negyzetel(L): | def negyzetel(L): | ||
uj_L = [] | uj_L = [] | ||
53. sor: | 54. sor: | ||
return uj_L | return uj_L | ||
− | # | + | # Az első n négyzetszám listában |
− | def elso_negyzetszamok(n) | + | def elso_negyzetszamok(n): |
elso_szamok = range(1, n+1) | elso_szamok = range(1, n+1) | ||
− | + | negyzetszamok = negyzetel(elso_szamok) | |
− | return | + | return negyzetszamok</python> |
|<python> | |<python> | ||
− | # | + | # Az első n négyzetszám listában |
− | def elso_negyzetszamok(n) | + | def elso_negyzetszamok(n): |
elso_szamok = range(1, n+1) | elso_szamok = range(1, n+1) | ||
71. sor: | 72. sor: | ||
uj_L.append(i*i) | uj_L.append(i*i) | ||
# Visszatérés | # Visszatérés | ||
− | + | negyzetszamok = uj_L | |
− | return | + | return negyzetszamok</python> |
|} | |} |
A lap 2015. február 10., 21:45-kori változata
Bemutatkozás
- Eisenberger András
- Hívjatok Csirkének
- email: csirkeee@gmail.com
Python ismétlés
Aki nem 2014-ben hallgatta az Info1-et és úgy érzi lemaradása van, azok részére elérhetőek
- Az előző félév előadásainak anyagai: Informatika1-2014/eloadas3, Informatika1-2014/eloadas4
- Vagy akár a hivatalos (angol) Python tanító anyag: Python tutorial.
Mai órán még kb. elég az eloadas3 anyaga, ami kell az függvények definiálása, elágazások.
A Python nagyon népszerű nyelv, többek között jól átlátható szintaxisa miatt, és mivel viszonylag könnyű új platformokra is átültetni. Ennek köszönhető, hogy rengeteg eszköz és erőforrás elérhető hozzá az interneten. Csak egy példa a http://pythontutor.com, amit itt az előadás lapjain is használunk a kód részletes bemutatásához, de ti is használhatjátok saját teszteléshez.
Függvényhívás
Python-ban a kódban bárhol definiálható függvény a kódban, a def
kulcsszóval. Egyelőre most arról az esetről beszélünk csak, amikor a fájl gyökerében van definiálva, nem másik függvényen belül. Amíg nem tanuljuk meg (később), hogy miért hasznos függvényen belül függvényt definiálni, addig soha ne tegyetek olyat.
Itt egy példa függvény:
# Függvény, ami a lista minden elemét négyzetre emeli def negyzetel(L): uj_L = [] for i in L: uj_L.append(i*i) return uj_L
Mi történik egy ilyen függvény meghívásakor? Tehát ha valahol a kódban ilyesmi szerepel, hogy
szamok = [5, 1, 8] negyzetelt_szamok = negyzetel(szamok)
Amikor a futtatás a negyzetel(L)
résznél tart, a következő dolgok történnek, ilyen sorrendben:
- A függvénynek a paraméterei megkapják a megfelelő nevüket. (Ebben az esetben az egy paraméter az
L
, annak az értéke az lesz, amit a paraméternek megadtunk, ebben az esetben aszamok
lista.) - A kód futása a függvény első sorára ugrik.
- A kód fut tovább amíg a következő három eset közül valamelyik megtörténik:
- Egy
return
parancshoz ér. Ekkor a függvény visszatér areturn
után megadott értékkel. - A futtatás a függvény végére ér, ekkor a függvény
None
-nal tér vissza. - Valamilyen hiba történik, ekkor az egész program leáll.
- Egy
- Ha a függvény visszatért, a visszatérési értéke a "függvény helyére kerül" a kódban, ebben az esetben eltároljuk a
negyzetelt_szamok
nevű változóba.
Itt egy kicsit hosszabb példa ami demonstrálja ezeket a lépéseket. Itt két kb. ekvivalens változata látható a kódnak, csak a jobb oldaliban kézzel csinálom meg azokat a dolgokat, amiket a függvény hívás automatikusan:
# Függvény, ami a lista minden # elemét négyzetre emeli def negyzetel(L): uj_L = [] for i in L: uj_L.append(i*i) return uj_L # Az első n négyzetszám listában def elso_negyzetszamok(n): elso_szamok = range(1, n+1) negyzetszamok = negyzetel(elso_szamok) return negyzetszamok |
# Az első n négyzetszám listában def elso_negyzetszamok(n): elso_szamok = range(1, n+1) # negyzetel függvény végrehajtása # paraméter: L = elso_szamok # kód: uj_L = [] for i in L: uj_L.append(i*i) # Visszatérés negyzetszamok = uj_L return negyzetszamok |