# 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.)