Python-alapok
Ajánlott menetrend: nyolc hét, napi kb. 25 perc kód. Annyi programozás, amennyi a tananyagok kódrészleteinek megértéséhez és a saját első kísérleteidhez kell.
12 szint és egy zárófeladat · kezdő. Minden szint egy gyakorlólappal zárul: a következő szint a feladatok kétharmadának helyes megoldásával nyílik meg.
Kezdés a használati útmutatóval →for nap, fok in enumerate(homersekletek):
if abs(fok - 21.0) > 1.0:
print(f"{nap}. nap: {fok} fok")
Tizenkét szint, egy zárófeladat
A példák hétköznapi adatokon futnak: egy kis bolt készletén, egy szobahőmérséklet-naplón és eladási adatokon. Nem azért, hogy szórakoztató legyen, hanem mert ismerős adaton hamarabb észreveszed, ha valami nem stimmel.
Minden teljesített gyakorlólap egy réteg. A haladásod csak ebben a böngészőben tárolódik.
Minden szint fel van oldva áttekintéshez. A gyakorlólapok eredményei megmaradnak.
Hogyan használd
Ez az anyag nem videó és nem olvasmány. Minden szint végén egy gyakorlólap van: próbáld ki magad, mielőtt továbbmész. Ha egy gyakorlólapon elakadsz, olvasd újra a szintet. Ez nem szégyen, a gyakorlólap pont erre való.
Hogyan tanulj vele. Először próbáld meg önállóan megoldani a feladatot. Ha elakadsz, kérj magyarázatot vagy egy kisebb segítséget (akár egy AI-eszköztől is), majd írd meg újra a megoldást saját magad. Akkor érdemes továbblépned, ha el tudod mondani, mit csinálnak a kód egyes sorai.
Ajánlott nyolchetes menetrend
Ez egy lehetséges tempó, nem határidő. Ha egy téma tovább tart, szánj rá több időt: az a fontos, hogy a végén el tudd mondani, mit csinálnak a kódod sorai.
| Hét | Szint | Mikorra kész |
|---|---|---|
| 1 | 1–2 · változó, lista | napi 3 apró feladat |
| 2 | 3–4 · dict, feltétel | napi 3 apró feladat |
| 3 | 5 · ciklus | mindent ciklussal oldj meg |
| 4 | 6 · függvény | bontsd fel a korábbi kódjaidat |
| 5 | 7–8 · hibakezelés, fájl | valódi CSV-vel dolgozz |
| 6 | 9–10 · osztály, modul | több fájlra bontás |
| 7 | 11–12 · venv, git | első repó |
| 8 | zárófeladat | működő eszköz, README-vel |
Mire lesz szükséged
Telepíts Pythont (python.org), és nyiss egy kódszerkesztőt; egy ingyenes szerkesztő bőven elég. A fájlt .py kiterjesztéssel mented, a terminálban a python fajlnev.py paranccsal futtatod. Ennyi az egész eszköztár a hatodik hétig.
Változó és típus
Cél:értékeket névvel tárolni, és tudni, miért nem ugyanaz a "150" és a 150.
A változó egy felcímkézett doboz. A címkét te adod, a tartalmat te teszed bele. Semmi több misztikum nincs benne.
# egy termék adatai a bolt nyilvántartásában termek_nev = "zabpehely" # str: szöveg ar = 890 # int: egész szám (forint) keszlet_db = 40 # int suly_kg = 0.5 # float: tizedes tört bio = True # bool: igaz vagy hamis print(termek_nev, ar)
Négy típus, amellyel az idő nagy részében dolgozni fogsz: int, float, str, bool. A típus nem dekoráció: meghatározza, mit lehet csinálni az értékkel.
3 + 4 # 7: összeadás "3" + "4" # "34": összefűzés! "3" + 4 # TypeError: hiba
Klasszikus buktató. Ha CSV-ből vagy beviteli mezőből olvasol számot, az szövegként érkezik. A "150" nem ugyanaz, mint a 150. Átalakítás: int("150") vagy float("0.5").
f-string: szöveg és érték együtt
cimke = f"{termek_nev}: {ar} Ft ({keszlet_db} db raktáron)"
print(cimke) # zabpehely: 890 Ft (40 db raktáron)
Mélyebben: miért nincs típusdeklaráció?
Pythonban a típus az értékhez tartozik, nem a változóhoz. Ugyanaz a név ma int-et, holnap str-t tarthat. Ez kényelmes, de ez a későn kiderülő hibák leggyakoribb forrása. Ezért írnak sokan típusjelölést (type hint): suly_kg: float = 0.5. A Python nem kényszeríti ki, de a szerkesztő szól, és az olvasó érti.
Lista
Cél:sok egyforma adatot egy helyen kezelni, elemet elérni, szeletelni és összegezni.
A lista rendezett elemsorozat. Bármilyen típusú elemet tartalmazhat, akár vegyesen is, de leggyakrabban akkor használod, ha ugyanolyan fajta dolgokból van több: napi hőmérsékletek, árak, dolgozatpontszámok.
homersekletek = [21.2, 20.9, 21.5, 19.8, 22.0] # öt nap szobahőmérséklete [°C] print(homersekletek[0]) # 21.2: az első elem indexe 0! print(homersekletek[-1]) # 22.0: az utolsó print(len(homersekletek)) # 5: hány elem van homersekletek.append(21.4) # hozzáfűz a végére homersekletek.remove(19.8) # kivesz egy konkrét értéket
Nulláról indexelünk. Az első elem a [0]. Egy ötelemű lista utolsó eleme a [4]. Az [5] már IndexError. Ez az első hét leggyakoribb hibája, és soha nem szűnik meg teljesen.
Szeletelés
homersekletek[1:3] # [20.9, 21.5]: 1-től 3-ig, a 3 NEM kell homersekletek[:2] # az első kettő homersekletek[-2:] # az utolsó kettő
Hasznos beépített függvények
sum(homersekletek) # összeg max(homersekletek) # legnagyobb min(homersekletek) # legkisebb sum(homersekletek) / len(homersekletek) # átlag sorted(homersekletek) # rendezett MÁSOLAT
Dict: kulcs és érték
Cél:kulcs–érték párokat tárolni (például egy dolog tulajdonságait névvel), és a „dictek listája” szerkezetet magabiztosan olvasni.
A dict kulcsokhoz rendel értékeket. Gyakori használata, hogy egy dolog különböző tulajdonságait tárolja névvel, de lehet benne például terméknév és darabszám párok sora is. Egy termék nem négy szám egymás után, hanem név, ár, kategória, tömeg, és mindegyiknek neve van.
termek = {
"nev": "zabpehely",
"ar": 890,
"kategoria": "reggeli",
"suly_kg": 0.5,
}
print(termek["kategoria"]) # reggeli
print(termek.get("akcio")) # None: nincs ilyen kulcs, de nem áll le
print(termek.get("akcio", 0)) # 0: alapérték, ha nincs kulcs
termek["bio"] = True # új kulcs felvétele
Mikor melyik. A lista[0] hibát dob, ha nincs elem. A dict["kulcs"] szintén (KeyError). A .get() viszont csendben None-t ad. Éles kódban a .get() alapértékkel gyakran biztonságosabb, de vigyázz: a csendes None később, messzebb okoz hibát.
Dictek listája: ez a leggyakoribb szerkezet
keszlet = [
{"nev": "alma", "ar": 450, "db": 12},
{"nev": "körte", "ar": 690, "db": 4},
{"nev": "szilva", "ar": 790, "db": 0},
]
print(keszlet[1]["nev"]) # körte
Ez a forma köszön vissza minden CSV-beolvasásnál, minden API-válasznál és minden adatbázis-lekérdezésnél. Ha ezt érted, a későbbi anyag fele már ismerős lesz.
Feltétel
Cél:döntéseket kódban leírni, és elkerülni a két leggyakoribb kezdő hibát.
Az if ott dönt, ahol te is döntenél. A hétköznapi döntések pont ilyenek: elég meleg van-e, van-e még raktáron, jár-e kedvezmény. A példában a szobahőmérséklet célja 21 fok, legfeljebb 1 fok eltéréssel.
homerseklet = 22.5
cel = 21.0
elteres_hatar = 1.0
if abs(homerseklet - cel) <= elteres_hatar:
print("RENDBEN")
elif homerseklet > cel:
print("TÚL MELEG")
else:
print("TÚL HIDEG")
A behúzás nem csak stílus. Pythonban a behúzás a szintaxis része. Hogy hány szóközzel húzol be, azt a nyelv nem írja elő, de egy blokkon belül következetesnek kell lennie; a négy szóköz a hivatalos stílusajánlás (PEP 8), érdemes mindig azt használni. Ami beljebb van, az tartozik az if-hez. Rossz behúzás más programot jelent, vagy IndentationError-t. A behúzás eleinte szokatlan lehet, de gyakorlással könnyen megszokható.
Összehasonlítás és logika
| Jel | Jelentés | Példa |
|---|---|---|
== | egyenlő | ar == 890 |
!= | nem egyenlő | kategoria != "reggeli" |
>= <= | nagyobb/kisebb vagy egyenlő | db >= 10 |
and | mindkettő igaz | ar > 500 and db > 0 |
or | legalább az egyik | akcios or kifuto |
not | tagadás | not bio |
in | benne van-e | "alma" in kosar |
Egy = vagy két ==. Az = értékadás, a == összehasonlítás. Az if ar = 890: szintaktikai hiba. Ez a klasszikus kezdő elgépelés.
Ciklus
Cél:ugyanazt a műveletet egy gyűjtemény minden elemén elvégezni, és közben szűrni.
Ha egy műveletet sok elemen kell elvégezned, nem másolod le ötvenszer. A for végigmegy egy gyűjteményen.
meresek = [21.2, 20.9, 22.5, 19.8] # négy nap szobahőmérséklete [°C]
for fok in meresek:
print(fok)
A fok nevet te adod, és minden körben a következő elemet tartalmazza. Ennyi.
Ciklus és feltétel: szűrés
kilogo = []
for fok in meresek:
if abs(fok - 21.0) > 1.0:
kilogo.append(fok)
print(f"{len(kilogo)} nap lógott ki a kényelmes sávból") # 2 nap (22.5 és 19.8)
Dictek listáján végigmenni
for tetel in keszlet:
if tetel["db"] == 0:
print(f"ELFOGYOTT: {tetel['nev']}") # ELFOGYOTT: szilva
Számláló, ha kell. Ha a sorszám is érdekel: for i, fok in enumerate(meresek):. Az i a 0-tól induló index.
Mélyebben: listaértelmezés (list comprehension)
A fenti szűrés egy sorban is leírható:
kilogo = [f for f in meresek if abs(f - 21.0) > 1.0]
Tömör és pythonos, de az első hónapban maradj a hosszú formánál. Előbb tudj ciklusban gondolkodni, csak utána rövidíts. A rövid forma nem okosabb kód, csak kevesebb sor.
Amit ne csinálj. Ne módosítsd azt a listát, amelyen épp végigmész. Elemek fognak kimaradni, és órákig keresed majd, miért. Gyűjts egy új listába, aztán cserélj.
Függvény
Cél:ismétlődő kódból elnevezett, újrahasználható műveletet csinálni.
A függvény egy megnevezett művelet, amelyet többször használsz. Ha ugyanazt a kódot kétszer másolod le, függvény kell.
def rendben(ertek, cel, hatar):
"""Igaz, ha az érték legfeljebb 'hatar'-nyira tér el a céltól."""
return abs(ertek - cel) <= hatar
if rendben(21.5, 21.0, 1.0):
print("OK")
Három része van: a név (rendben), a bemenetek (ertek, cel, hatar) és a visszatérési érték (return). Ha nincs return, a függvény None-t ad vissza; ez is gyakori hibaforrás.
Alapértelmezett paraméter
def rendben(ertek, cel, hatar=1.0):
return abs(ertek - cel) <= hatar
rendben(21.5, 21.0) # 1.0-s határral számol: True
rendben(21.5, 21.0, hatar=0.2) # felülírva: False
A jó függvény ismérve. Egy dolgot csinál, és a neve elárulja, mit. Ha a névbe „és” kerül (beolvas_es_kiertekel), érdemes elgondolkodni, nem két külön feladatról van-e szó. Ez jó jelzés, nem kötelező szabály: a döntő szempont, hogy a kód átlátható maradjon.
Buktató. A print() és a return nem ugyanaz. A print kiír a képernyőre, a return értéket ad vissza a hívónak. Számoló függvényben szinte mindig return kell.
Hibakezelés
Cél:a hibát kontrolláltan kezelni, és felismerni a leggyakoribb hibatípusokat.
A program futás közben hibába ütközhet. A kérdés az, hogy ezt kezelni tudja-e, vagy váratlanul leáll. Valódi adatokkal dolgozva ez nem elméleti különbség.
try:
ar = int(sor["ar"])
except ValueError:
print(f"Hibás ár: {sor['ar']}")
ar = None
except KeyError:
print("Hiányzik az ár oszlop")
ar = None
A leggyakoribb hibatípusok
| Hiba | Mit jelent |
|---|---|
ValueError | Jó típus, rossz érték: int("kismedve") |
TypeError | Rossz típus: "3" + 4 |
KeyError | Nincs ilyen kulcs a dictben |
IndexError | Nincs ilyen indexű elem a listában |
FileNotFoundError | Nincs meg a fájl |
ZeroDivisionError | Nullával osztás |
Amit soha. Ne írj except: vagy except Exception: pass formát. Ez elnyeli az összes hibát, azokat is, amelyekről tudnod kellene. Egy elnyelt hiba rosszabb, mint egy leálló program: a leálló programról tudsz, az elnyelt hibáról nem.
Mélyebben: mikor kapd el, és mikor ne
Csak azt a hibát kapd el, amelyre van értelmes válaszod. Ha a válaszod annyi, hogy „kiírom és megyek tovább”, általában jobb hagyni, hogy a hiba továbbmenjen, és a hívó szinten dönteni. A hibakezelés nem a hiba eltüntetéséről szól, hanem arról, hogy a program ismert állapotba kerüljön.
Komolyabb programban a print helyett a logging modul a helyes megoldás: időbélyeggel, szinttel, fájlba írva.
Fájl, CSV, JSON
Cél:a saját fájljaidból dolgozni: szöveget, CSV-t és JSON-t olvasni és írni.
Itt kezd a Python valódi eszközzé válni: amikor nem beírt adatokkal, hanem a saját fájljaiddal dolgozol.
Szövegfájl
with open("naplo.txt", encoding="utf-8") as f:
for sor in f:
print(sor.strip())
A with gondoskodik róla, hogy a fájl akkor is bezáruljon, ha hiba történik. A strip() a szöveg elejéről és végéről is levágja a szóközt, a tabulátort és a sortörést. Ha csak a sorvéget akarod levágni, használd az rstrip("\n")-t. Az encoding="utf-8" nélkül az ékezetek elszállhatnak; magyar szöveggel ez nem opcionális.
CSV: a táblázatos adatok közös nyelve
import csv
with open("eladasok.csv", encoding="utf-8", newline="") as f:
olvaso = csv.DictReader(f)
for sor in olvaso:
print(sor["termek"], sor["kategoria"])
A DictReader minden sort dictté alakít, a fejléc alapján. Vagyis pontosan azt a szerkezetet kapod, amelyet a 3. szinten kézzel építettél.
Táblázatkezelőből jövő CSV. A magyar beállítású táblázatkezelők gyakran pontosvesszővel mentenek, nem vesszővel, és a tizedesjel vessző. Ilyenkor: csv.DictReader(f, delimiter=";"), a számoknál pedig float(ertek.replace(",", ".")). Magyar környezetben ez nem kivétel, hanem az alapeset.
JSON: a programok közti adatcsere nyelve
import json
# kiírás
with open("keszlet.json", "w", encoding="utf-8") as f:
json.dump(keszlet, f, ensure_ascii=False, indent=2)
# beolvasás
with open("keszlet.json", encoding="utf-8") as f:
keszlet = json.load(f)
A JSON tömbje Python-listára, objektuma dictre képeződik le, ezért lesz ismerős minden API-válasz, például a RAG-laborban. Teljesen azonos azonban nem: a JSON-ban a kulcs csak szöveg lehet, és a típuskészlet is szűkebb (nincs benne például tuple vagy dátum).
Osztály, alapszinten
Cél:osztályt olvasni és írni, és tudni, mikor nem kell.
Az osztály összecsomagolja az adatot és a rá vonatkozó műveleteket. Nem kell szeretni, és nem kell mindent osztályba tenni, de olvasni tudnod kell, mert a legtöbb könyvtár így épül.
class Termek:
def __init__(self, nev, ar, db):
self.nev = nev
self.ar = ar
self.db = db
def cimke(self):
return f"{self.nev}: {self.ar} Ft"
t = Termek("zabpehely", 890, 40)
print(t.cimke()) # zabpehely: 890 Ft
print(t.ar) # 890
Az __init__ a létrehozáskor fut le. A self maga a példány: a példánymetódusok első paramétere, és hívásnál nem te adod meg. (Vannak osztály- és statikus metódusok is, ezeknél másképp van; itt nem lesz rájuk szükség.)
Mikor kell osztály. Ha ugyanaz az adathalmaz és a rá vonatkozó műveletek együtt mozognak, és több példány van belőlük. Egyszerű adattároláshoz a dict vagy a dataclass elég. A „mindent osztályba” reflex más nyelvekből hozott szokás; Pythonban nem érdem.
Mélyebben: dataclass
from dataclasses import dataclass
@dataclass
class Termek:
nev: str
ar: int
db: int
Ugyanaz, kevesebb gépeléssel: automatikus __init__, olvasható kiírás, összehasonlíthatóság. Adatot tároló osztályoknál szinte mindig ez a jobb választás.
Modul és projektstruktúra
Cél:egy nagyobb programot több fájlra bontani, és úgy megírni, hogy más is el tudja indítani.
Ha a fájlod nő, és jól elkülönülő részekből áll (beolvasás, ellenőrzés, jelentés), érdemes szétszedni. Nem a sorszám dönt, hanem hogy átlátható-e még. Minden .py fájl egy modul, amelyet importálhatsz.
bolt_elemzo/ ├── main.py # belépési pont ├── beolvasas.py # CSV-kezelés ├── ellenorzes.py # eltérés a tervtől ├── adatok/ │ └── eladasok.csv ├── requirements.txt └── README.md
# main.py
from beolvasas import csv_betolt
from ellenorzes import rendben
sorok = csv_betolt("adatok/eladasok.csv")
for sor in sorok:
...
A __main__ trükk. Az if __name__ == "__main__": alá írt blokk csak akkor fut, ha a fájlt közvetlenül indítod, importáláskor nem. Enélkül az importálásnak mellékhatásai lennének. Minden komolyabb Python-fájlban látni fogod.
if __name__ == "__main__":
fomuvelet()
README: ez is a munka része
Négy dolog kell bele: mit csinál, hogyan telepíted, hogyan futtatod, és milyen a bemenet formátuma. Öt sor is elég. Egy README nélküli projektből az derül ki, hogy a szerzője nem számolt azzal, hogy más is használni fogja.
venv és pip
Cél:projektenként elkülönített környezetet használni, és a függőségeket rögzíteni.
Minden projektnek saját, elkülönített környezete van. Így nem törik el az egyik projekt attól, hogy a másikhoz frissítettél egy csomagot.
# környezet létrehozása (a projekt mappájában) python -m venv .venv # aktiválás: Windows, PowerShell .\.venv\Scripts\Activate.ps1 # aktiválás: Windows, parancssor (cmd) .venv\Scripts\activate.bat # aktiválás: Linux és macOS source .venv/bin/activate # csomag telepítése python -m pip install requests # a jelenlegi állapot rögzítése python -m pip freeze > requirements.txt # máshol ugyanez visszaállítható python -m pip install -r requirements.txt
Miért számít. A requirements.txt rögzíti a csomagokat és verzióikat, és ez sokat segít, hogy a kódod más gépen is fusson. Garancia nem: a Python-verzió, az operációs rendszer és egyes külső könyvtárak is számíthatnak. Ez nem formalitás: a „nálam működik” a programozás legrégebbi kifogása, és a venv az egyik válasz rá.
Ne tedd verziókövetésbe. A .venv mappát soha ne tedd gitbe: nagy, gépfüggő és felesleges. Erre való a .gitignore.
Git
Cél:a munkádat lépésenként menteni, visszanézni és ágakon kísérletezni.
Nem AI, és nem is Python, de enélkül nincs rendezett munka. A git megmutatja, hogyan dolgozol: mikor, mit, milyen lépésekben.
git init # új repó a mappában git status # mi változott git add . # a változások előkészítése git commit -m "CSV-beolvasás" # mentés üzenettel git log --oneline # előzmények git diff # mi változott pontosan, soronként
Ágak
git branch elteres-vizsgalat # új ág git switch elteres-vizsgalat # átváltás git switch main # vissza
Commit-üzenet. Azt írd le, mit és miért változtattál, ne azt, hogy „módosítás” vagy „javítás2”. Jó példa: eltérésvizsgálat kiterjesztése a terv alatti értékekre. Aki a kódodat olvassa, a commitok listájából érti meg leggyorsabban, hogyan gondolkodtál.
.gitignore. Legalább ennyi legyen benne: .venv/, __pycache__/, *.pyc, és minden, ami személyes adatot vagy kulcsot tartalmaz. Ha egy API-kulcs nyilvánosságra kerül, azonnal vond vissza vagy cseréld le a szolgáltatónál. A kiszivárgott kulcs vagy személyes adat bizalmasságát a fájl törlése önmagában nem állítja helyre: a git-előzményben és mások gépén is megmaradhat.
Zárófeladat: eladásinapló-elemző
Ha az ajánlott menetrendet követed, nyolc hét után jó eséllyel önállóan, néhány óra alatt meg tudod írni. Ha tovább tart, az is rendben van. Ha megy, készen állsz a RAG-laborra.
A feladat
Készíts eszközt, amely beolvas egy CSV-t egy bolt havi eladásaival, és jelentést ad arról, mi tért el jelentősen a tervtől.
Bemenet
azonosito;termek;kategoria;bevetel_eft;terv_eft E-001;zabpehely;reggeli;412,5;400,0 E-002;alma;gyümölcs;331,0;400,0 E-003;tej;tejtermék;408,2;400,0
Követelmények
- Olvassa be a CSV-t (pontosvessző, tizedesvessző, UTF-8).
- Számolja ki soronként a százalékos eltérést a tervtől.
- Jelölje meg, ami 10%-nál többel eltér a tervtől (a példában az E-002: −17,25%).
- Írja ki: összes tétel, rendben lévő, eltérő, átlagos eltérés.
- Mentse az eltérő tételeket külön CSV-be.
- Kezelje: hiányzó fájl, hiányzó oszlop, számmá nem alakítható érték.
- Legyen benne legalább három függvény, külön modulokban.
- Legyen git-repó, értelmes commitokkal és README-vel.
Bővítés, ha könnyen ment
- Kategóriánként külön statisztika.
- Parancssori paraméter az eltérési határra (
argparse). loggingaprinthelyett.
Önellenőrzés. Nyisd meg a kész kódot egy hét múlva. Ha bármelyik soráról azt mondod, hogy „nem tudom, miért írtam”, ott van egy lyuk. Ennél jobb visszamérés nem létezik.
Fogalomtár
- int, float, str, bool
- Egész szám, tizedes tört, szöveg, igaz-hamis érték.
- Lista
- Sorrendtartó gyűjtemény, az elemei index szerint érhetők el.
- Dict
- Kulcs–érték párok gyűjteménye.
- Index
- Egy elem sorszáma a listában, 0-tól számolva.
- Szeletslice
- A
[a:b]kifejezés: a-tól b-ig, b nélkül. - Iteráció
- Végigmenés egy gyűjtemény elemein.
- Paraméter, argumentum
- A függvény bemenetének neve, illetve a hívásnál ténylegesen átadott érték.
- return
- A függvény visszaadott értéke.
- Kivételexception
- Futás közben keletkező hiba, amely elkapható és kezelhető.
- Modul
- Egy
.pyfájl, amely importálható. - Csomagpackage
- Modulok mappája.
- venv
- Projektszintű, elkülönített Python-környezet.
- Commit
- Egy mentett változtatáscsomag a gitben.
- Repórepository
- Verziókövetett projektmappa.
Hivatalos dokumentáció
Ha elakadsz, vagy pontosan tudni szeretnéd, mit csinál egy függvény, itt érdemes utánanézni. Ezek az elsődleges források; a blogok és fórumok mellettük hasznosak, helyettük nem.
- A Python hivatalos dokumentációja — a nyelv, a beépített függvények és a standard könyvtár leírása; bármelyik modul (például
csv,json) itt kereshető. - A Python hivatalos oktatóanyaga — a nyelv végigvezetett bemutatása, ha egy témát részletesebben szeretnél.
- venv: virtuális környezetek — a projektszintű környezet létrehozása és használata.
- A pip dokumentációja — csomagok telepítése, frissítése, a
requirements.txt. - A Git dokumentációja — a parancsok leírása és egy ingyenes, teljes könyv.
Hova tovább
A következő lépés a szoftverfejlesztés alapjai: API-hívás, tesztelés (pytest), naplózás (logging). Ha az összes gyakorlólap teljesítve van, a RAG-labor a következő jó állomás: ott egy teljes, dokumentumokból válaszoló rendszert építesz meg nulláról.
A példák kitalált adatokkal dolgoznak.
Tanításban vagy a munkahelyeden használod? Örülnék, ha megírnád: csaplar.d@gmail.com