SZÁMELMÉLET
5. LECKE
A programírás közben széles számos környezetben használunk numerikus műveletet. A számok pedig sokféle módon kezelhetők a Pythonban, amelyet leginkább a kontextus határoz meg, amelyben használják. Vagyis azt kell eldöntenünk, hogyan szeretnénk értelmezni a számokat.
Az alapvető aritmetikai műveletek: az összeadás (+), a kivonás (–), a szorzás (*) és az osztás (/), mind lehetségesek a Pythonban.
Emlékszem, amikor először megértettem, hogy a kódolás nem csak “nullák és egyesek”, hanem tiszta logika.
Egyetlen sor kód – és a gép kiszámol bármit.
Olyan érzés volt, mintha varázspálcát kaptam volna. 🪄
Ebben a leckében te is megtanulod, hogyan tud a Python gondolkodni a számokról —
és hogyan fordíthatod le a hétköznapi számításokat a kód nyelvére.
A lecke tartalma
I. A műveletek elvégzése (Video)
Nézzünk is meg néhány példát, az egyszerűség kedvéért az alábbiakban egész számokkal (int) fogunk számolni. Nyisd meg a gépedre telepített kódszerkesztőt, például a PyCharm-ot, és írd be a következő szkripteket:
1. Összeadás
print(4+5)
A fenti kód lefuttatása után a Python konzolban megjelenített eredmény: 5.
9
print(2+3+30+6)
A Python a fenti számok összegét adja végeredményül, ami 41.
41
2. Kivonás
A kivonás az összeadás ellentéte. Csak a műveleti jellel teszünk különbséget, az elrendezés teljesen ugyanaz, mint fentebb.
Gépeljük is be az alábbi sort:
print(20-5)
15
3. Szorzás
Szorzás végrehajtásához adjuk meg a következő kódot.
print(4*5)
20
4. Osztás
Ha pedig osztani szeretnénk, próbáljuk ki a következő kódot:
print(12/2)
A konzol megjelenített válasza: 6.0
Az eredményül kapott érték automatikusan tört számjegyként jelenik meg (float), annak ellenére, hogy maradék nélkül osztható a 12 a 2 -vel. Erről később lesz szó.
6.0
II. Matematikai és nyelvi műveletek
Az előző fejezetben ismertetett karakterláncok bemutatásánál láthattuk, hogy a karakterláncok lehetnek szó szerinti szövegek vagy idézőjelekben írt számértékek.
A számok és szavak egyetlen sorban való összevonása természetes és gyakori dolognak számít, ha kódokkal dolgozunk.
Példa szöveg és szám egy “állításban” való használatára
A címem: Teréz körút 46
Kezdjük is el beírni a kódunkat a szerkesztőbe, hogy megtudjuk, mi történik, amikor arra kérjük a Pythont, hogy a fent említett módon jelenítse meg az utasítást.
Az egyszerűbb szemléltetés miatt most csak az utcaszámot tároljuk le egy változóban. De itt szöveges karakterlánc helyett (tehát idézőjelek nélkül) tényleges számként fogjuk kezelni.
street_number = 46
print("A címem:" + " " + "Teréz körút" + " " + street_number)
Mi történt? Ez a művelet a Python a konzolunkban már a futtatás utáni első pillanatban “TypeError” hibát jelez. Miért?
A Python nem tud egész számokat (int) az idézőjelekben tárolt karakterláncokhoz kapcsolni. Alapjában csak az azonos típusú konstansok (karakterláncok a karakterláncokkal vagy egész számok (int) az egész számokkal (int)) köthetőek össze.
Ahhoz, hogy a fenti szabályt “megkerüljük”, és továbbra is a céljainkat kövessük, el kell mondanunk a Pythonnak, hogy “bár a 25 egy szám, de szükségünk van rá, hogy ebben az esetben karakterláncként működjön“.
1. A str() függvény szerepe
Nézzük meg, kis átalakítás után most hogyan tudjuk működésre bírni a fenti kódrészletünket. Hogy jobban megértsd miről van szó, ebben a rövid videóban bemutatom az str() függvény működését:
A videóban használt kódrészletünk:
street_number = 46
print("A címem:" + " " + "Teréz körút" + " " + str(street_number))
A street_number változót zárójelbe tettük a str() utasítás miatt. A Python ebből látja, hogy a benne lévő változó egy karakterlánc, és így fogja kezelni. Tehát mit is csináltunk mi a számmal? Szöveges karakterlánccá alakítottuk az str() utasítással.
Futtassuk le a fenti kódot és nézzük meg, változott-e valami az “output” – ban!
Jelenleg a konzolban megjelenített sorunk így néz ki:
A címem: Teréz körút 46
A fentiek szerint, viszonylag egyszerű módon határozhatjuk meg, hogy az utasításban szereplő szám karakterlánc vagy egész szám.
Ne feledjük, hogy a probléma akkor keletkezik, ha szöveges adatokat numerikus adatokkal (számokkal) próbáljuk kombinálni. Ehhez kell az, hogy az egyiket a másikhoz át tudjuk alakítani, pl jelen esetben a számot alakítjuk szöveggé az str() “string” utasítással.
"De miért kell átalakítanunk a számot szöveggé? Nem lenne egyszerűbb, ha egyszerűen csak szövegként kezelek mindent a kódsorban?"
Teljesen igazad van és jogos a feltételezésed. Írjuk is be az alábbi sort a kódszerkesztőbe:
print("A címem: Teréz körút 46")
Output:
A címem: Teréz körút 46
Ahhoz, hogy igazán megértsd, miről van szó, képzeld el, hogy hozzáférésed van egy hatalmas adatbázishoz, amely számos numerikus adat-értéket tartalmaz különböző személyekhez, például egy nagy cégek ügyfeleihez.
Az ügyfelek életkorát felhasználhatod arra, hogy személyre szabott születésnapi üdvözleteket küldj ki a rendszerből, ahogy azt a munkáltatód kérte.
2. Konkrét példa születésnapi üdvözletre
Hozzunk létre egy “Anita” nevű fogyasztót, aki 27 éves. Az adatbázist végignézve meg kell találnunk Anita életkorát, hogy be tudjuk helyettesíteni a születésnapi üdvözletünkbe. A szám, amit keresünk az adatbázisban: 27 .
Mi az alábbi kódot használva küldünk neki egy üzenetet, amelyet ki fogunk íratni a konzolba. Viszont, ha az ügyfél-nyilvántartásban manuálisan keresnénk, hatalmas fáradság lenne és rengeteg időbe, energiába telne megtalálni, kinek mikor van születésnapja.
Ehelyett tegyük fel, hogy létezik egy „age” változó, amely az ügyfelek tényleges életkorát tartalmazza.
A Python kód így fog kinézni:
age = 27
print("Boldog" + " " + str(age) + ". születésnapot kívánunk, Anita!")
Az alábbiakban látható is a konzolunkban kiíratott mondatunk:
Boldog 27. születésnapot kívánunk, Anita!
Most pedig oldjuk meg az is, hogy Anita keresztnevét is behelyettesítse a Python az általunk létrehozott változóval.
Jelen esetben a köszöntésünket tartalmazó kód így néz ki:
age = 27
name = "Anita"
print("Boldog" + " " + str(age) + ". születésnapot kívánunk" + ", " + name + "!")
Az eredmény viszont ugyanaz maradt:
Boldog 27. születésnapot kívánunk, Anita!
A fent látható változókban láthatjuk, hogy az életkort számként (string), a nevet pedig szövegként (string) tároltuk le a változókban. Ez a fajta struktúra lehetővé teszi, hogy személyre szabott üzeneteket írjunk mindenkinek, a tehát az életkort és a nevet be fogja helyettesíteni egy adott szövegkörnyezet sablonba.
Így lényegesen leegyszerűsíthető ez a folyamat. De fontos azonban megjegyezni, hogy a Python meglehetősen szigorú nyelv.
Mindig ugyanazt a fajta idézőjelet (‘) vagy (“) kell használnunk a kódsorban és ügyelnünk kell a helyesen megadott változókra is. Ha olyat csinálunk, ami ellenkezik a Python szabványaival, hiba fog keletkezni és nem fog lefutni a programunk.
🧠 III. ÁTTEKINTÉS
Ebben az anyagrészben megtanulhattuk a matematikai műveletek alapjait, beleértve az összeadást, kivonást, szorzást és osztást. Láthattuk, egyetlen sorban hogyan kombinálhatjuk a numerikus adatokat a szövegekkel.
✍️ IV. HÁZI FELADAT
Az alábbi feladatok végrehajtásával tovább erősítheted a fentiekben ismertetett számelmélet és számok-szövegek kombinálásának megértését. A berögződés menete a gyakorlás, ezért nagyon ajánlott mindenkinek elkezdeni a gondolatokat önállóan is kivitelezni.
1.feladat:
Írj Python-szkriptet a következő matematikai műveletekhez és futtasd le őket:
a). 8+20
b). 40-17
c). 15*2
d). 81/9
2. feladat:
Tegyük fel, hogy munkaadód azt kéri, hogy írj az ügyfelei részére személyre szabott jókívánságokat születésnapjuk alkalmából. A neveknek és az életkoruknak hozz létre külön változókat, majd egy általad megfogalmazott jókívánsággal írasd ki az egész mondatokat a konzolban.
- András, 39 éves
- Judit, 42 éves
- Gery, 24 éves
Fontos!
A feladatok a gyakorlásra vannak. A gyakorlással pedig tapasztalatot szerzel. Mindenképp javasolt, hogy a feladatokat önállóan oldd meg. Javaslom, hogy ha végeztél, csak akkor nézz rá a megoldásra. Erősen ajánlott, hogy előtte mindenképp szánj rá időt és próbáld önállóan végiggondolni, hogy mit is kellene és hogyan lehetséges megvalósítani.
MEGOLDÁSOK (SZÁMELMÉLET)
1. feladat
A videóban bemutatott kód:
print(8+20)
print(40-17)
print(15*2)
print(81/9)
Output:
28
23
30
9.0
2. feladat
Biztos vagyok benne, hogy erre a kreatív feladatra sok megoldás lehetséges, ezért én most csak mutatok három különböző példát a változók karakterláncokban való elhelyezkedéséhez:
A videóban bemutatott kód:
customer_1_name = "András"
customer_1_age = 39
customer_2_name = "Judit"
customer_2_age = 42
customer_3_name = "Gery"
customer_3_age = 24
print("Boldog" + " " + str(customer_1_age) + ". születésnapot kívánunk" + ", " + customer_1_name + "!")
print("Isten éltessen" + " " + customer_2_name + ", " + str(customer_2_age) + ". születésnapod alkalmából szeretettel gratulálunk!")
print("Kedves " + customer_3_name + "! Ma lettél " + str(customer_3_age) + " éves, Boldog szülinapot kívánunk a csapatunk nevében!")
Output:
Boldog 39. születésnapot kívánunk, András!
Isten éltessen Judit, 42. születésnapod alkalmából szeretettel gratulálunk!
Kedves Gery! Ma lettél 24 éves, Boldog szülinapot kívánunk a csapatunk nevében!
VI. VISSZAJELZÉS
➡️ Mennyire volt érthető a mai lecke?
Segítsd kérlek a munkánkat, hogy a jövőben még hasznosabb tartalmakat tudjunk készíteni és fejlődhessünk. A visszajelzés teljesen anonym, nincs szükség sem az e-mail címedre, sem a személyes adataidra. A kérdőív kitöltése csak 1 percet vesz igénybe.
Köszönöm, ha rászánsz egy percet – minden visszajelzés segít, hogy még érthetőbb anyagot formálhassak. 🙏
Nagyon kíváncsi vagyok, hogyan sikerült megoldanod a házi feladatot. Várom a visszajelzésedet. 🙂
Ígérem, a következő lecke is hasznos lesz. Főleg ha struktúrában, rendezetten szeretnénk kódolni.
Üdv:
Mészáros Csaba
PythonProject.hu
“Tanulj meg Pythonban gondolkodni – lépésről lépésre.”