💻 Programozás – 8. évfolyam

🚀 8. évfolyam – Fejlesztő

🐍 Szöveges programozás Pythonban

A Python könnyen olvasható, mégis sokoldalú programozási nyelv. Használják webalkalmazások, játékok, automatizált rendszerek, robotok, adatelemző és mesterségesintelligencia-megoldások készítésére is. Ebben a témakörben a tanulók a blokkprogramozás után megismerik a szöveges programkód írásának alapjait.

A példák Python 3 nyelven készültek. A feladatok Thonnyban vagy más Python 3 környezetben is futtathatók.


🎯 A témakör céljai

A tanuló legyen képes:

  • egyszerű Python-programot létrehozni, menteni és futtatni;
  • megérteni és módosítani rövid programkódokat;
  • adatokat kiírni és a felhasználótól bekérni;
  • változókat és alapvető adattípusokat használni;
  • számításokat és típusátalakítást végezni;
  • feltételekkel döntési helyzeteket programozni;
  • for és while ciklussal ismétléseket létrehozni;
  • szövegeket és listákat feldolgozni;
  • saját függvényeket készíteni;
  • egyszerű szövegfájlokat olvasni és írni;
  • egy összetettebb programot megtervezni, tesztelni és bemutatni.

🧠 Előzetes tudás

  • algoritmus és utasítássorozat;
  • változó, feltétel és ciklus;
  • esemény, bemenet és kimenet;
  • program indítása, tesztelése és hibajavítása.

📚 Tananyag

1. Ismerkedés a Pythonnal

Mit tanulunk?

  • a fejlesztői környezet részei;
  • program létrehozása, mentése és futtatása;
  • a print() utasítás;
  • szövegek és számok kiírása;
  • megjegyzések használata;
  • a szintaktikai hiba fogalma.

Első programunk

print("Helló, világ!")
print("Python-programozást tanulok.")

A print() utasítás a zárójelben megadott értéket megjeleníti a képernyőn. A szöveget idézőjelek közé írjuk.

print("Az eredmény:", 3 + 4)

A # jellel kezdődő megjegyzést a Python nem hajtja végre. A megjegyzés segít megérteni a programot.

# Ez a program köszön a felhasználónak.
print("Üdv a Python világában!")

Fontos szabályok

  • A Python megkülönbözteti a kis- és nagybetűket: print helyes, Print hibás.
  • A zárójeleket és az idézőjeleket párban kell használni.
  • A program utasításait általában fentről lefelé hajtja végre.
  • A fájlokat beszédes néven, .py kiterjesztéssel mentjük.

Gyakorlófeladatok

  1. Írasd ki a nevedet és az osztályodat két külön sorba!
  2. Készíts háromsoros üdvözlőkártyát!
  3. Írasd ki a 12 + 8, 12 - 8 és 12 * 8 eredményét!
  4. Egészítsd ki a programot legalább két magyarázó megjegyzéssel!

Mini projekt

👤 Digitális bemutatkozás: készíts programot, amely címmel, rendezett sorokkal és legalább egy számítással mutat be téged vagy egy kitalált szereplőt!


2. Változók és adattípusok

A változó névvel ellátott tárolóhely. Értéke a program működése közben megváltozhat.

nev = "Anna"
eletkor = 14
magassag = 1.62
tanulo = True

print(nev)
print(eletkor)

Alapvető adattípusok

AdattípusPython-névPélda
szövegstr"Python"
egész számint14
tört számfloat3.5
logikai értékboolTrue, False

Az = értékadó operátor. A jobb oldali értéket a bal oldali változóba helyezi.

pontszam = 10
pontszam = pontszam + 5
print(pontszam)  # 15

Változónevek szabályai

  • betűvel vagy aláhúzással kezdődjenek;
  • ne tartalmazzanak szóközt;
  • ne legyenek Python-kulcsszavak;
  • legyenek rövidek, de beszédesek;
  • ékezet nélküli nevekkel a kód könnyebben hordozható.

Gyakorlófeladatok

  1. Tárold változókban egy könyv címét, oldalszámát és árát, majd írasd ki őket!
  2. Hozz létre pontszam változót, növeld 10-zel, majd csökkentsd 3-mal!
  3. Cseréld fel két változó értékét egy harmadik változó segítségével!
  4. Vizsgáld meg a változók típusát a type() függvénnyel!

Mini projekt

🪪 Digitális adatlap: a program tárolja és rendezett formában jelenítse meg egy kitalált játékos nevét, szintjét, pontszámát és aktív állapotát!


3. Adatbevitel és számítások

Az input() függvény megállítja a programot, és megvárja a felhasználó válaszát. Az eredmény mindig szövegként érkezik.

nev = input("Mi a neved? ")
print("Szia,", nev + "!")

Számolás előtt a szöveget számmá kell alakítani.

eletkor = int(input("Hány éves vagy? "))
print("Jövőre", eletkor + 1, "éves leszel.")

Matematikai műveletek

MűveletJelPélda
összeadás+5 + 2
kivonás-5 - 2
szorzás*5 * 2
osztás/5 / 2
egész osztás//5 // 2
maradék%5 % 2
hatványozás**5 ** 2
szelesseg = float(input("A téglalap szélessége: "))
magassag = float(input("A téglalap magassága: "))
terulet = szelesseg * magassag
kerulet = 2 * (szelesseg + magassag)
print("Terület:", terulet)
print("Kerület:", kerulet)

Gyakorlófeladatok

  1. Kérj be két számot, majd jelenítsd meg az összegüket és különbségüket!
  2. Számítsd ki egy négyzet kerületét és területét!
  3. Válts át perceket órára és percre az // és % segítségével!
  4. Számítsd ki három jegy átlagát, majd kerekítsd két tizedesre a round() függvénnyel!

Mini projekt

🧮 Egyszerű számológép: kérjen be két számot, és jelenítse meg a négy alapművelet eredményét. Gondoskodj az áttekinthető kiírásról!


4. Feltételek és döntések

A feltételes szerkezet segítségével a program az adatoktól függően különböző utasításokat hajthat végre.

homerseklet = float(input("Hány °C van? "))

if homerseklet > 25:
    print("Meleg van.")
elif homerseklet >= 15:
    print("Kellemes az idő.")
else:
    print("Hűvös van.")

Az if, elif és else sor végén kettőspont áll. A hozzájuk tartozó utasításokat beljebb kell kezdeni. Ezt behúzásnak nevezzük.

Összehasonlító és logikai operátorok

JelJelentés
==egyenlő
!=nem egyenlő
<, >kisebb, nagyobb
<=, >=kisebb vagy egyenlő, nagyobb vagy egyenlő
andmindkét feltétel igaz
orlegalább az egyik igaz
nota logikai érték ellentéte
eletkor = int(input("Életkor: "))
van_jegy = input("Van jegyed? (igen/nem) ") == "igen"

if eletkor >= 12 and van_jegy:
    print("Beléphetsz.")
else:
    print("A belépés feltételei nem teljesülnek.")

Gyakorlófeladatok

  1. Döntsd el egy számról, hogy pozitív, negatív vagy nulla!
  2. Döntsd el a % művelettel, hogy egy egész szám páros vagy páratlan!
  3. Készíts jegyértékelőt 1 és 5 közötti jegyekhez!
  4. Vizsgáld meg, hogy három megadott oldalhossz alkothat-e háromszöget!

Mini projekt

🎟️ Belépőjegy-kalkulátor: a program életkor és választott kategória alapján állapítsa meg a jegy árát! Legalább három különböző esetet kezeljen.


5. Véletlen számok

A véletlen értékekhez először be kell tölteni a random modult.

import random

dobas = random.randint(1, 6)
print("A dobás eredménye:", dobas)

A randint(a, b) mindkét határértéket beleértve választ egész számot. A choice() egy adatsor elemei közül választ.

import random

lehetosegek = ["kő", "papír", "olló"]
gep = random.choice(lehetosegek)
print("A gép választása:", gep)

Gyakorlófeladatok

  1. Szimulálj tízoldalú dobókockát!
  2. Sorsolj ki egy nevet egy listából!
  3. Készíts véletlen jelszót négy megadott szóból és egy számból!
  4. Kérj be egy tippet 1 és 10 között, majd hasonlítsd össze a kisorsolt számmal!

Mini projekt

🔢 Számkitaláló játék: a számítógép válasszon egy számot 1 és 100 között. A játékos tippje után jelezze, hogy a keresett szám kisebb vagy nagyobb. A teljes változat a következő ciklusos fejezetben készül el.


6. Ciklusok

A ciklus egy programrészt többször hajt végre.

for ciklus

A for ciklust akkor használjuk, ha ismert az ismétlések száma.

for szam in range(1, 6):
    print(szam)

A range(1, 6) az 1, 2, 3, 4 és 5 értékeket adja. A felső határ nem tartozik bele.

osszeg = 0
for szam in range(1, 11):
    osszeg = osszeg + szam
print("Az összeg:", osszeg)

while ciklus

A while ciklus addig ismétlődik, amíg a feltétele igaz.

jelszo = ""
while jelszo != "python8":
    jelszo = input("Jelszó: ")
print("Helyes jelszó!")

Végtelen ciklus keletkezik, ha a feltétel mindig igaz marad. A break utasítás szükség esetén megszakítja a ciklust.

Teljes számkitaláló játék

import random

titkos = random.randint(1, 100)
tippek = 0

while True:
    tipp = int(input("Tippelj 1 és 100 között: "))
    tippek += 1

    if tipp < titkos:
        print("Nagyobb számra gondoltam.")
    elif tipp > titkos:
        print("Kisebb számra gondoltam.")
    else:
        print("Eltaláltad! Tippek száma:", tippek)
        break

Gyakorlófeladatok

  1. Írasd ki 1-től 20-ig a páros számokat!
  2. Készíts szorzótáblát egy bekért számhoz!
  3. Kérj be öt jegyet, és számítsd ki az átlagukat!
  4. Kérj addig egész számokat, amíg a felhasználó nullát nem ír; végül jelenítsd meg az összegüket!

Mini projekt

🔐 Kódzár: a felhasználónak legfeljebb három próbálkozása legyen a helyes PIN-kód megadására. Siker esetén nyíljon ki a zár, különben a program tiltsa le a belépést!


7. Szövegek kezelése

A szöveg karakterek rendezett sorozata. A karakterek sorszámozása nullával kezdődik.

szo = "Python"
print(szo[0])      # P
print(szo[-1])     # n
print(len(szo))    # 6
print(szo[1:4])    # yth

Hasznos szövegműveletek

uzenet = "  Python programozás  "
print(uzenet.strip())
print(uzenet.lower())
print(uzenet.upper())
print(uzenet.replace("Python", "Szöveges"))

Az in operátorral megvizsgálhatjuk, hogy egy részlet megtalálható-e a szövegben.

mondat = input("Írj egy mondatot: ")
if "python" in mondat.lower():
    print("A mondat tartalmazza a Python szót.")

Formázott szöveg

nev = "Dávid"
pont = 18
print(f"{nev} pontszáma: {pont}")

Gyakorlófeladatok

  1. Számold meg egy szó karaktereit!
  2. Írass ki egy bekért szót fordított sorrendben a [::-1] segítségével!
  3. Számold meg egy mondatban az a betűk számát a count() metódussal!
  4. Ellenőrizd a kis- és nagybetűket figyelmen kívül hagyva, hogy egy szó palindrom-e!

Mini projekt

🕵️ Egyszerű szövegelemző: kérjen be egy mondatot, majd mutassa meg a hosszát, a szavak számát, a magánhangzók számát és a mondat nagybetűs változatát!


8. Listák

A lista több összetartozó értéket tárol egyetlen változóban.

gyumolcsok = ["alma", "körte", "szilva"]
print(gyumolcsok[0])

gyumolcsok.append("barack")
gyumolcsok.remove("körte")
print(gyumolcsok)

Lista bejárása

pontok = [12, 18, 15, 20]

for pont in pontok:
    print(pont)

print("Legnagyobb:", max(pontok))
print("Legkisebb:", min(pontok))
print("Átlag:", sum(pontok) / len(pontok))

Hasznos listaműveletek

  • append() – új elem hozzáadása;
  • insert() – elem beszúrása megadott helyre;
  • remove() – adott érték törlése;
  • pop() – megadott helyen lévő elem kivétele;
  • sort() – rendezés;
  • len() – elemszám;
  • in – elem keresése.

Gyakorlófeladatok

  1. Készíts listát öt kedvenc filmedből, majd írasd ki számozva!
  2. Kérj be egy új elemet, add a listához, majd rendezd a listát!
  3. Tárolj öt hőmérsékletet, és jelenítsd meg a minimumot, maximumot és átlagot!
  4. Keresd meg, szerepel-e egy bekért név a névsorban!

Mini projekt

🛒 Bevásárlólista-kezelő: a felhasználó tudjon elemet hozzáadni, törölni, keresni, rendezni és megjeleníteni. A program menüje ciklusban működjön!


9. Függvények

A függvény névvel ellátott, újra felhasználható programrész. Segítségével a hosszú programot kisebb, áttekinthető egységekre bonthatjuk.

def koszones(nev):
    print(f"Szia, {nev}!")

koszones("Lili")
koszones("Márk")

A paraméter a függvény bemeneti adata. A return visszaadja a kiszámított eredményt.

def teglalap_terulet(a, b):
    return a * b

eredmeny = teglalap_terulet(5, 3)
print("Terület:", eredmeny)

Miért használunk függvényeket?

  • elkerüljük a kód ismétlését;
  • áttekinthetőbb lesz a program;
  • külön tesztelhetjük a programrészeket;
  • ugyanazt a megoldást több adattal is használhatjuk.

Gyakorlófeladatok

  1. Készíts negyzet(szam) függvényt!
  2. Készíts függvényt, amely eldönti egy számról, hogy páros-e!
  3. Készíts Celsius–Fahrenheit átváltó függvényt!
  4. Írj függvényt, amely egy pontszámhoz szöveges értékelést ad vissza!

Mini projekt

🧮 Moduláris számológép: minden matematikai művelet külön függvényben legyen. A főprogram kérje be az adatokat, válassza ki a megfelelő függvényt, majd jelenítse meg az eredményt!


10. Fájlkezelési alapok

A változók adatai a program bezárásakor elvesznek. Fájlban az adatokat későbbi használatra is megőrizhetjük.

Írás szövegfájlba

with open("naplo.txt", "w", encoding="utf-8") as fajl:
    fajl.write("Első naplóbejegyzés\n")

A w mód új fájlt hoz létre vagy felülírja a meglévőt. Az a mód a fájl végéhez fűzi az új tartalmat.

bejegyzes = input("Új bejegyzés: ")

with open("naplo.txt", "a", encoding="utf-8") as fajl:
    fajl.write(bejegyzes + "\n")

Olvasás szövegfájlból

with open("naplo.txt", "r", encoding="utf-8") as fajl:
    tartalom = fajl.read()

print(tartalom)

A with szerkezet a művelet végén biztonságosan bezárja a fájlt. Az encoding="utf-8" segít az ékezetes karakterek helyes kezelésében.

Gyakorlófeladatok

  1. Mentsd el a felhasználó nevét és kedvenc tantárgyát egy fájlba!
  2. Készíts programot, amely új ötleteket fűz egy otletek.txt fájlhoz!
  3. Olvasd be és számozd meg egy fájl sorait!
  4. Ments el öt pontszámot, majd beolvasás után számítsd ki az átlagukat!

Mini projekt

🏆 Pontszámlista: kérje be a játékos nevét és pontszámát, fűzze az eredményt egy fájlhoz, majd jelenítse meg az összes korábbi eredményt!


11. Játék készítése Pythonban

Egy játékprogram több korábban tanult elemet kapcsol össze: adatbevitelt, változókat, feltételeket, ciklusokat, listákat, véletlen számokat és függvényeket.

A játék tervezési kérdései

  • Mi a játék célja?
  • Hogyan irányít a játékos?
  • Mik a szabályok?
  • Hogyan változik a pontszám vagy az életek száma?
  • Mikor győz vagy veszít a játékos?
  • Hogyan lehet újraindítani vagy befejezni a játékot?

Minta – rövid kvízjáték

kerdesek = [
    ["Mennyi 6 * 7? ", "42"],
    ["Melyik nyelvet tanuljuk? ", "python"],
    ["Hány elemű a micro:bit LED-mátrixa? ", "25"]
]

pont = 0

for kerdes, helyes in kerdesek:
    valasz = input(kerdes).strip().lower()
    if valasz == helyes:
        print("Helyes!")
        pont += 1
    else:
        print("Nem helyes. A válasz:", helyes)

print(f"Eredmény: {pont}/{len(kerdesek)}")

Fejlesztési lehetőségek

  • kérdések véletlenszerű sorrendje;
  • három élet használata;
  • nehézségi szintek;
  • pontszám mentése fájlba;
  • új játék lehetősége;
  • időkorlát vagy bónuszpont.

Mini projekt

🎮 Választható játék: készíts kvízt, kő–papír–ollót, akasztófát, számkitalálót vagy egyszerű szöveges kalandot! A program tartalmazzon legalább egy ciklust, egy függvényt, egy listát és többágú döntést.


12. Saját Python-projekt

A témakör végén a tanulók önállóan vagy párban készítenek egy saját programot.

A projektkészítés lépései

  1. Ötlet: milyen problémát old meg vagy milyen élményt nyújt a program?
  2. Célcsoport: ki fogja használni?
  3. Követelmények: mit kell feltétlenül tudnia?
  4. Bemenet és kimenet: milyen adatokat kap és milyen eredményt ad?
  5. Algoritmus: készíts folyamatábrát vagy lépéslistát!
  6. Részfeladatok: bontsd kisebb egységekre a megoldást!
  7. Programozás: először a legfontosabb funkció készüljön el!
  8. Tesztelés: próbáld ki szokásos, szélsőséges és hibás adatokkal!
  9. Javítás: keresd meg a hiba okát, majd ellenőrizd újra!
  10. Bemutatás: ismertesd a célt, a működést és a tanulságokat!

Kötelező programozási elemek

A projekt tartalmazzon:

  • legalább három változót;
  • felhasználói adatbevitelt;
  • legalább egy többágú feltételt;
  • legalább egy ciklust;
  • listát vagy szövegfeldolgozást;
  • legalább egy saját függvényt;
  • áttekinthető kiírást;
  • megjegyzéseket a fontosabb programrészeknél.

Választható projektötletek

  • ❓ tantárgyi kvíz;
  • 🧠 memória- vagy szókincsfejlesztő játék;
  • 🔐 jelszógenerátor és jelszóerősség-vizsgáló;
  • 📊 osztályzatelemző;
  • 💰 zsebpénz-nyilvántartó;
  • 📚 könyv- vagy filmlista-kezelő;
  • 🌡️ időjárási adatnapló mintaadatokkal;
  • 🗺️ szöveges kalandjáték;
  • 🏆 bajnokság-pontszámoló;
  • 📝 egyszerű személyes napló.

Projektbemutató

A 3–5 perces bemutató térj ki:

  • a program céljára;
  • a célközönségre;
  • a legfontosabb funkciókra;
  • egy érdekes kódrészletre;
  • egy megtalált és kijavított hibára;
  • a továbbfejlesztés lehetőségeire.

🔧 Tesztelés és hibakeresés

A hiba a programozás természetes része. A hibakeresés célja nem csupán a hiba eltüntetése, hanem az ok megértése.

A hibák fő típusai

Szintaktikai hiba

A kód nem felel meg a Python nyelvtani szabályainak.

print("Szia!"

Futási hiba

A program elindul, de végrehajtás közben hibába ütközik, például nullával osztáskor vagy nem létező listaelem használatakor.

Logikai hiba

A program lefut, de rossz eredményt ad. Ezt gyakran a legnehezebb felismerni.

Hibakeresési stratégia

  1. Olvasd el pontosan a hibaüzenetet!
  2. Keresd meg a jelzett sort!
  3. Ellenőrizd a zárójeleket, idézőjeleket, kettőspontokat és behúzásokat!
  4. Írasd ki a változók köztes értékeit!
  5. Teszteld külön a kisebb programrészeket!
  6. Egyszerre csak egy dolgot változtass!
  7. Javítás után ismételd meg a tesztet!

Tesztesetek

Egy jó programot többféle adattal próbálunk ki:

  • szokásos érték;
  • legkisebb és legnagyobb megengedett érték;
  • nulla;
  • üres szöveg;
  • hibás típusú vagy tartományon kívüli adat.

🛡️ Digitális biztonság és felelős programozás

  • Ne kérj be szükségtelen személyes adatot!
  • Jelszót ne jeleníts meg és ne tárolj védelem nélküli szövegfájlban!
  • Más programját csak engedéllyel használd fel, és jelöld a forrást!
  • Az internetről származó kódot előbb értsd meg, majd biztonságos környezetben teszteld!
  • A program ne sértsen, ne tévesszen meg, és ne okozzon kárt másoknak!
  • Mesterséges intelligencia segítsége esetén ellenőrizd, magyarázd meg és teszteld a kapott kódot!

✅ Értékelési javaslat

TerületArányMit értékelünk?
Működés35%teljesíti-e a program a követelményeket
Programozási megoldás25%helyes változók, feltételek, ciklusok, listák és függvények
Áttekinthetőség15%beszédes nevek, tagolás, megjegyzések
Tesztelés és hibajavítás15%tesztesetek, hibák felismerése és javítása
Bemutatás és önállóság10%érthető ismertetés, saját döntések indoklása

Differenciálás

Támogatást igénylő tanulóknak

  • részben elkészített kód;
  • hiányzó sorok pótlása;
  • vizuális algoritmus vagy folyamatábra;
  • páros programozás;
  • rövid, egyetlen új fogalomra épülő feladatok.

Gyorsabban haladó tanulóknak

  • bemenetellenőrzés tryexcept használatával;
  • összetett, egymásba ágyazott adatszerkezetek;
  • pontszámok rendezése és toplista;
  • több fájl vagy modul használata;
  • grafikus felület vagy Turtle-grafika önálló kiegészítésként.

🧪 Összefoglaló gyakorlati feladat

Tanulói eredménykezelő

Készíts programot, amely:

  • bekéri a tanulók nevét és pontszámát;
  • listában tárolja az adatokat;
  • kiszámítja az átlagot;
  • megkeresi a legjobb eredményt;
  • szöveges értékelést ad a pontszámokhoz;
  • lehetővé teszi a keresést név alapján;
  • függvényekre bontva működik;
  • igény szerint fájlba menti az eredményeket.

Továbbfejlesztési ötletek

  • eredmények rendezése;
  • osztályzat kiszámítása százalékból;
  • toplista készítése;
  • adatok visszaolvasása fájlból;
  • hibás bemenet kezelése.