# Dátumok A dátum **nem önálló adattípus** a Python-ban, de a `datetime` nevű modult beimportálva dátum objektumokkal tudunk dolgozni. >[!example] A `datetime` modul importálása és a jelenlegi dátum és idő kiíratása >```python >import datetime > >x = datetime.datetime.now() >print(x) >``` ## A dátum kiírása Ha lefuttatjuk a fenti kódot, például ezt az eredményt kaphatjuk: >[!example] Kimenet >```bash >2025-11-28 05:53:04.475678 >``` Ez a dátum tartalmazza: - évet - hónapot - napot - órát - percet - másodpercet - mikromásodpercet A `datetime` modul sok metódust tartalmaz, amellyel információt tudunk lekérni a dátum objektumról. Íme néhány példa: >[!example] Az év és a hét napjának kiírása >```python >import datetime > >x = datetime.datetime.now() > >print(x.year) >print(x.strftime("%A")) >``` ## Dátumobjektum létrehozása Új dátumot a `datetime` modul `datetime()` osztályával hozhatunk létre. A `datetime()` három kötelező paramétert vár: - év - hónap - nap >[!example] Dátumobjektum létrehozása >```python >import datetime > >x = datetime.datetime(2020, 5, 17) > >print(x) >``` A `datetime()` opcionálisan időadatokat is fogad (`hour`, `minute`, `second`, `microsecond`, `tzone`), de ezek alapértelmezése **0**, a timezone-é pedig `None`. ## A `strftime()` metódus A `datetime` objektumnak van egy metódusa, amellyel a dátumot **formázott, olvasható sztringgé** alakíthatjuk. A metódus neve: `strftime()`. Egy paramétert vár: a **formátumkódot**, amely meghatározza a visszaadott szöveg formáját. >[!example] A hónap nevének kiíratása >```python >import datetime > >x = datetime.datetime(2018, 6, 1) > >print(x.strftime("%B")) >``` ## Az összes érvényes formátumkód magyarázata | **Direktíva** | **Jelentés** | **Példa** | | ------------- | -------------------------------------- | ------------------------ | | `%a` | Hét napja (rövid) | Wed | | `%A` | Hét napja (teljes) | Wednesday | | `%w` | Hét napja számként (0–6), 0 = vasárnap | 3 | | `%d` | Nap (01–31) | 31 | | `%b` | Hónap neve (rövid) | Dec | | `%B` | Hónap neve (teljes) | December | | `%m` | Hónap száma (01–12) | 12 | | `%y` | Év (két számjegy) | 18 | | `%Y` | Év (négy számjegy) | 2018 | | `%H` | Óra (00–23) | 17 | | `%I` | Óra (01–12) | 05 | | `%p` | AM/PM | PM | | `%M` | Perc (00–59) | 41 | | `%S` | Másodperc (00–59) | 08 | | `%f` | Mikromásodperc (000000–999999) | 548513 | | `%z` | UTC eltérés | +0100 | | `%Z` | Időzóna | CST | | `%j` | Az év napjának sorszáma (001–366) | 365 | | `%U` | Hét száma (vasárnappal kezdve, 00–53) | 52 | | `%W` | Hét száma (hétfővel kezdve, 00–53) | 52 | | `%c` | Dátum és idő helyi formátumban | Mon Dec 31 17:41:00 2018 | | `%C` | Évszázad | 20 | | `%x` | Helyi dátumformátum | 12/31/18 | | `%X` | Helyi időformátum | 17:41:00 | | `%%` | A % karakter | % | | `%G` | ISO 8601 év | 2018 | | `%u` | ISO 8601 hét napja (1–7) | 1 | | `%V` | ISO 8601 hét száma (01–53) | 01 | # Matematikai függvények A Python rengeteg **beépített matematikai függvényt** tartalmaz, valamint egy kiterjedt `math` modul is rendelkezésre áll, amely számos matematikai művelet elvégzését lehetővé teszi. ## Beépített matematikai függvények A `min()` és `max()` függvényekkel megtalálhatjuk egy bejárható objektum legalacsonyabb vagy legmagasabb értékét: >[!example] Minimum és maximum meghatározása >```python >x = min(5, 10, 25) >y = max(5, 10, 25) >print(x) >print(y) >``` Az `abs()` függvény a megadott szám **abszolút** értékét adja vissza: >[!example] Abszolút érték meghatározása >```python >x = abs(-7.25) > >print(x) >``` A `pow(x, y)` függvény x` a `y`-adik hatványon értékét adja vissza (xʸ). 4 a harmadik hatványon (ugyanaz, mint 4 * 4 * 4): >[!example] Hatványozás >```python >x = pow(4, 3) > >print(x) >``` > # **A math modul** A Python tartalmaz egy beépített modult, a `math` modult, amely tovább bővíti a matematikai függvények listáját. Használatához először be kell importálni: >[!example] `math` modul importálása >```python >import math >``` Miután beimportáltuk, használhatjuk a modul metódusait és konstansait. ## Négyzetgyök A `math.sqrt()` metódus visszaadja egy szám négyzetgyökét: >[!example] Négyzetgyök meghatározása >```python >import math > >x = math.sqrt(64) >print(x) >``` ## Kerekítés - `math.ceil(x)` → a számot **felfelé** kerekíti a legközelebbi egészre - `math.floor(x)` → a számot **lefelé** kerekíti a legközelebbi egészre >[!example] Kerekítés >```python >import math > >x = math.ceil(1.4) >y = math.floor(1.4) > >print(x) # 2 >print(y) # 1 >``` ## A $\pi$ értéke A ``math.pi`` konstans a $\pi$ értékét tartalmazza (3.141592…). >[!example] π értéke >```python >import math > >x = math.pi >print(x) >``` ## Feladatok ### Dátum >[!task] **1. A mai dátum egyszerű kiíratása** >Írj programot, amely importálja a `datetime` modult, lekéri a **jelenlegi dátumot és időt**, kiírja a következő formában: `Ma van: ÉÉÉÉ-HH-NN ÓÓ:PP:MM. >[!task] **2. Születésnap hét napja** >Kérd be a felhasználótól a születési dátumát (év, hónap, nap). Hozz létre belőle egy `datetime` objektumot, majd írd ki, hogy **a hét melyik napján született** (pl. Monday). >[!task] ** 3. Hány nap van karácsonyig?** >Írj programot, amely kiszámolja a mai nap és a következő december 24. közötti **napok számát**. Ha december 24. már elmúlt, akkor a **következő év karácsonyáig** számoljon. ### Matematikai >[!task] **1. Kör területe** >Kérd be a felhasználótól a kör **sugarát**, majd számold ki a kör **területét**: $T=r^2 \cdot \pi\enspace .$ >A $\pi$ értékét a `math.pi` segítségével használd. Írd ki az eredményt két tizedesjegyre kerekítve. >[!task] **2. Másodfokú megoldóképlet** > Írj programot, amely bekéri a felhasználótól a másodfokú egyenlet együtthatóit: `a`, `b`, `c` és kiszámolja a megoldásokat a következő képlettel: $x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2ac}\enspace .$ > Kezeli a három esetet: > - két valós megoldás > - egy valós megoldás > - nincs valós megoldás (diszkrimináns < 0) >[!task] **3. Pitagorasz-tétel** >Kérd be a derékszögű háromszög két befogóját (`a` és `b`), majd számold ki az átfogót: >$c= \sqrt{a^2 + b^2}\enspace.$ >[!task] **4. Szám abszolút értéke és hatványa** >Kérd be a felhasználótól egy számot: >- írd ki az **abszolút értékét** (`abs()`) >- majd kérj be egy kitevőt, és írd ki a szám hatványát (`pow()` vagy `**`) >[!task] **5. Kerekítési műveletek** >Írj programot, amely: >1. bekér egy lebegőpontos számot (pl. 3.76) >2. a `math.ceil()` segítségével **felfelé kerekíti** >3. a `math.floor()` segítségével **lefelé kerekíti** >4. mindkét eredményt írja ki! ## Források - https://www.w3schools.com/python/python_datetime.asp (utolsó hozzáférés dátuma: 2025. 11. 28.) - https://www.w3schools.com/python/python_math.asp (utolsó hozzáférés dátuma: 2025. 11. 28.)