User Tools

Site Tools


tanszek:oktatas:muszaki_informatika:fueggvenyek_modulok

Függvények, modulok

Miért kellenek függvények?

  • Probléma: ismétlődő kód, átláthatatlanság.
  • Megoldás: a kódot logikai egységekre bontjuk.
  • A függvény csak akkor fut le, ha meghívjuk.

<sxh python> def fuggveny_nev():

  utasitas

</sxh>

Egyszerű függvény: <sxh python> def koszones():

  print("Szia!")
  

def uzenet():

  print("K")
  

uzenet() uzenet() uzenet() koszones() </sxh>

Paraméterek Paraméter: adat, amit a függvény kap. Bármennyi lehet, akár 0 is.

<sxh python> def koszones(nev):

  print("Szia", nev)

koszones(“Anna”)

def osszeg(a, b):

  print(a + b)
  

osszeg(6,7) </sxh>

Példa: Írj függvényt, ami kiszámolja egy téglalap területét. Add át paraméterként a szélességet és magasságot. <sxh python> def teglalap_terulet(szelesseg, magassag):

  print(szelesseg * magassag)

teglalap_terulet(5, 3) </sxh>

return (visszatérési érték) A return értéket ad vissza.

<sxh python> def osszeg(a, b):

  return a + b

x = osszeg(4, 6) print(x) </sxh>

Példa: Írj függvényt, ami visszaadja egy szám négyzetét. Használd az eredményt egy változóban. <sxh python> def negyzet(szam):

  return szam ** 2

eredmeny = negyzet(5) print(“Négyzet:”, eredmeny) </sxh>


Összefoglaló feladatok

1. feladat: Írj függvényt, ami:

  • kap egy listát paraméterként
  • visszaadja az elemek összegét

<sxh python> def lista_osszeg(lista):

  osszeg = 0
  for elem in lista:
      osszeg += elem
  return osszeg

szamok = [1, 2, 3, 4] print(lista_osszeg(szamok)) </sxh>

2. feladat: Írj programot, ami:

  1. Bekér 5 számot
  2. Listába teszi
  3. Függvénnyel kiszámolja:
    • az összegét
    • az átlagát
  4. Kiírja az eredményeket

<sxh python> def osszeg(lista):

  s = 0
  for elem in lista:
      s += elem
  return s

def atlag(lista):

  return osszeg(lista) / len(lista)

szamok = [] for i in range(5):

  szam = float(input("Adj meg egy számot: "))
  szamok.append(szam)

print(“Összeg:”, osszeg(szamok)) print(“Átlag:”, atlag(szamok)) </sxh>

3. feladat: Írj egy függvényt osszeg névvel, ami egy lista számot kap és visszaadja az összegüket. Próbáld ki a függvényt egy felhasználótól bekért számok listájával. <sxh python> # Megoldás def osszeg(szamok):

  total = 0
  for sz in szamok:
      total += sz
  return total

# Példa input be = input(“Adj meg számokat szóközzel elválasztva: ”) szamok_lista = [int(x) for x in be.split()]

print(“Összeg:”, osszeg(szamok_lista)) </sxh>

4. feladat: Írj egy függvényt legnagyobb_szo(szavak) névvel, ami egy szavak listáját kapja és visszaadja a leghosszabb szót. <sxh python> # Megoldás def legnagyobb_szo(szavak):

  max_szo = ""
  for szo in szavak:
      if len(szo) > len(max_szo):
          max_szo = szo
  return max_szo

szavak = [“alma”, “korte”, “barack”, “sargadinnye”] print(“Leghosszabb szó:”, legnagyobb_szo(szavak)) </sxh>

5. feladat: Készíts egy függvényt szavak_szamlalo(szoveg), ami visszaad egy dict-et: kulcs a szó, érték a darabszám. <sxh python> # Megoldás def szavak_szamlalo(szoveg):

  szavak = szoveg.split()
  szamolas = {}
  for szo in szavak:
      szamolas[szo] = szamolas.get(szo, 0) + 1
  return szamolas

szoveg = “alma korte alma barack alma” print(szavak_szamlalo(szoveg)) </sxh>

6. feladat: Írj egy függvényt paros_paratlan(szamok) névvel, ami egy lista számot kap és két listát ad vissza: párosok és páratlanok. <sxh python> # Megoldás def paros_paratlan(szamok):

  paros = []
  paratlan = []
  for sz in szamok:
      if sz % 2 == 0:
          paros.append(sz)
      else:
          paratlan.append(sz)
  return paros, paratlan

szamok = [1,2,3,4,5,6,7,8] paros, paratlan = paros_paratlan(szamok) print(“Párosok:”, paros) print(“Páratlanok:”, paratlan) </sxh>

7.feladat: Írj egy függvényt egyedi_karakterek(szoveg), ami egy stringet kap és visszaad egy set-et, ami az összes egyedi karaktert tartalmazza. <sxh python> # Megoldás def egyedi_karakterek(szoveg):

  karakterek = set()
  for c in szoveg:
      karakterek.add(c)
  return karakterek

szoveg = “programozas” print(“Egyedi karakterek:”, egyedi_karakterek(szoveg)) </sxh>

8. feladat: Képzeld el, hogy egy kis osztályban szeretnénk nyilvántartani a diákok nevét, tantárgyait és jegyeit. - Készíts egy programot, ami:

  1. Bekéri a diákok nevét és tantárgyait.
  2. Minden diákhoz több jegyet lehet felvinni listában.
  3. Függvényekkel:
    • Egy függvény számolja ki a diákok átlagát tantárgyanként.
    • Egy függvény visszaadja a legjobb jegyet minden diákhoz.
    • Egy függvény megmondja, melyik diákoknak van 1-es jegye.
  4. Külön set segítségével listázd az összes tantárgyat, amit az osztályban tanulnak.
  5. Külön dict segítségével listázd, hogy hány diák tanul minden tantárgyat.

<sxh python> # Függvények

def atlag_diak(jegyek):

  """Lista jegyek -> átlag"""
  if len(jegyek) == 0:
      return 0
  osszeg = 0
  for szam in jegyek:
      osszeg += szam
  return osszeg / len(jegyek)

def legjobb_jegy(jegyek):

  """Lista jegyek -> legnagyobb érték"""
  if len(jegyek) == 0:
      return None
  max_jegy = jegyek[0]
  for szam in jegyek:
      if szam > max_jegy:
          max_jegy = szam
  return max_jegy

def egyes_jegy(jegyek):

  """Ellenőrzi, van-e 1-es jegy"""
  for szam in jegyek:
      if szam == 1:
          return True
  return False

# Adatok felvitele diakok = {}

while True:

  nev = input("Add meg a diák nevét (vagy ENTER a befejezéshez): ")
  if nev == "":
      break
  tantargyak = input("Add meg a tantárgyakat szóközzel elválasztva: ").split()
  jegyek = []
  for tantargy in tantargyak:
      be = input(f"Add meg {nev} jegyeit a(z) {tantargy}-ból szóközzel elválasztva: ")
      jegyek_tantargy = [int(x) for x in be.split()]
      jegyek.append((tantargy, jegyek_tantargy))
  diakok[nev] = jegyek

# Összes tantárgy set osszes_tantargy = set() for jegyek_lista in diakok.values():

  for tantargy, _ in jegyek_lista:
      osszes_tantargy.add(tantargy)

print(“\nÖsszes tantárgy az osztályban:”, osszes_tantargy)

# Tantárgyhoz hány diák tantargy_darab = {} for tantargy in osszes_tantargy:

  count = 0
  for jegyek_lista in diakok.values():
      for t, _ in jegyek_lista:
          if t == tantargy:
              count += 1
              break
  tantargy_darab[tantargy] = count

print(“\nDiákok száma tantárgyanként:”, tantargy_darab)

# Diákok átlagai, legjobb jegyek, 1-es jegyek print(“\nDiák statisztikák:”) for nev, jegyek_lista in diakok.items():

  print(f"\n{nev}:")
  for tantargy, jegyek_tantargy in jegyek_lista:
      print(f"  {tantargy}: átlag={atlag_diak(jegyek_tantargy):.2f}, legjobb={legjobb_jegy(jegyek_tantargy)}")
      if egyes_jegy(jegyek_tantargy):
          print("    Figyelem: van 1-es jegy!")

</sxh>


Osztályok

  • Osztály (class): Sablon/tervrajz objektumokhoz.
  • Objektum (instance): Konkrét példány az osztályból.
  • Attribútum: Objektum tulajdonsága (self.nev, self.ev).
  • Metódus: Objektumhoz tartozó függvény (def metodus(self): …).
  • Konstruktor: init – automatikusan meghívódik objektum létrehozásakor.
  • Öröklődés: Egy osztály átveszi más osztály tulajdonságait és metódusait.
  • Felülírás: Gyerek osztály felülírja a szülő metódusát.

Egyszerű példa: <sxh python> class Auto:

  def __init__(self, marka, ev):
      self.marka = marka
      self.ev = ev
  def bemutatkozik(self):
      print(f"Ez egy {self.marka} típusú autó, {self.ev}-es évjárat.")

auto1 = Auto(“Toyota”, 2020) auto1.bemutatkozik() </sxh>

Öröklés: <sxh python> class Jarmu:

  def __init__(self, marka):
      self.marka = marka
  def bemutatkozik(self):
      print(f"Jármű: {self.marka}")

class Auto(Jarmu):

  def __init__(self, marka, ev):
      super().__init__(marka)
      self.ev = ev
  def bemutatkozik(self):
      print(f"Autó: {self.marka}, évjárat: {self.ev}")

auto2 = Auto(“Audi”, 2021) auto2.bemutatkozik() </sxh>

1. feladat: Diák osztály

  • Attribútumok: nev, eletkor, jegyek (lista)
  • Metódusok: jegyet_hozzaad, atlag, legjobb_jegy

<sxh python> class Diak:

  def __init__(self, nev, eletkor):
      self.nev = nev
      self.eletkor = eletkor
      self.jegyek = []
  def jegyet_hozzaad(self, jegy):
      self.jegyek.append(jegy)
  def atlag(self):
      if len(self.jegyek) == 0:
          return 0
      return sum(self.jegyek)/len(self.jegyek)
  def legjobb_jegy(self):
      if len(self.jegyek) == 0:
          return None
      return max(self.jegyek)

# Példa diak = Diak(“Anna”, 16) diak.jegyet_hozzaad(5) diak.jegyet_hozzaad(4) diak.jegyet_hozzaad(3)

print(diak.nev, “átlaga:”, diak.atlag()) print(diak.nev, “legjobb jegye:”, diak.legjobb_jegy()) </sxh>

2. feladat: Banki számla

  • Attribútumok: tulajdonos, egyenleg
  • Metódusok: betesz, kivesz, egyenleg_lekerdez

<sxh python> class BankSzamla:

  def __init__(self, tulajdonos, egyenleg=0):
      self.tulajdonos = tulajdonos
      self.egyenleg = egyenleg
  def betesz(self, osszeg):
      self.egyenleg += osszeg
  def kivesz(self, osszeg):
      if osszeg <= self.egyenleg:
          self.egyenleg -= osszeg
      else:
          print("Nincs elég pénz!")
  def egyenleg_lekerdez(self):
      return self.egyenleg

# Példa szamla = BankSzamla(“Bence”, 1000) szamla.betesz(500) szamla.kivesz(200) print(szamla.tulajdonos, “egyenlege:”, szamla.egyenleg_lekerdez()) </sxh>

3. feladat: Állat öröklődés:

  • Szülő osztály: Allat (attribútum: nev)
  • Gyerek osztályok: Kutya, Macska (metódus: hangot_ad)

<sxh python> class Allat:

  def __init__(self, nev):
      self.nev = nev

class Kutya(Allat):

  def hangot_ad(self):
      print(f"{self.nev} ugat: Vau-vau!")

class Macska(Allat):

  def hangot_ad(self):
      print(f"{self.nev} nyávog: Miau!")

kutya = Kutya(“Bodri”) macska = Macska(“Cirmi”) kutya.hangot_ad() macska.hangot_ad() </sxh>

4. feladat: Könyv osztály

  • Attribútumok: cim, szerzo, oldalszam
  • Metódus: bemutatkozik

<sxh python> class Konyv:

  def __init__(self, cim, szerzo, oldalszam):
      self.cim = cim
      self.szerzo = szerzo
      self.oldalszam = oldalszam
  def bemutatkozik(self):
      print(f"{self.cim} ({self.szerzo}), {self.oldalszam} oldal")

konyv = Konyv(“Python alapok”, “Kovács Péter”, 250) konyv.bemutatkozik() </sxh>

5. feladat: Jármű osztály + Auto és Motor

  • Szülő: Jarmu (típus, ev)
  • Gyerek: Auto, Motor
  • Metódus: bemutatkozik

<sxh python> class Jarmu:

  def __init__(self, tipus, ev):
      self.tipus = tipus
      self.ev = ev

class Auto(Jarmu):

  def bemutatkozik(self):
      print(f"Autó: {self.tipus}, évjárat: {self.ev}")

class Motor(Jarmu):

  def bemutatkozik(self):
      print(f"Motor: {self.tipus}, évjárat: {self.ev}")

auto = Auto(“BMW”, 2022) motor = Motor(“Yamaha”, 2021) auto.bemutatkozik() motor.bemutatkozik() </sxh>

tanszek/oktatas/muszaki_informatika/fueggvenyek_modulok.txt · Last modified: 2026/02/19 20:28 by szabom