Informatika2-2015/Eloadas 1 Python-1 Fuggveny Hibakereses

A MathWikiből
(Változatok közti eltérés)
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
  
# Függvény, ami az elso n negyzetszamot visszaadja egy listában
+
# 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)
     negyzetelt_elso_szamok = negyzetel(elso_szamok)
+
     negyzetszamok = negyzetel(elso_szamok)
     return negyzetelt_elso_szamok</python>
+
     return negyzetszamok</python>
 
|<python>
 
|<python>
# Függvény, ami az elso n negyzetszamot visszaadja egy listában
+
# 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
     negyzetelt_elso_szamok = uj_L
+
     negyzetszamok = uj_L
 
      
 
      
     return negyzetelt_elso_szamok</python>
+
     return negyzetszamok</python>
 
|}
 
|}

A lap 2015. február 10., 21:45-kori változata

Bemutatkozás

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

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:

  1. 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 a szamok lista.)
  2. A kód futása a függvény első sorára ugrik.
  3. A kód fut tovább amíg a következő három eset közül valamelyik megtörténik:
    1. Egy return parancshoz ér. Ekkor a függvény visszatér a return után megadott értékkel.
    2. A futtatás a függvény végére ér, ekkor a függvény None-nal tér vissza.
    3. Valamilyen hiba történik, ekkor az egész program leáll.
  4. 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
Személyes eszközök