Ez a program egy egyszerű **statisztikai adatfeldolgozó**. Egy listában tárolt számokból kiszámítja:
* az **átlagot**,
* a **legnagyobb értéket (maximumot)**,
* és naplózza (kiírja) az eredményt.
Forrás;
----------------
from typing import List, Dict, Optional
import logging
# 1. Beállítjuk a naplózást a hibák és információk követésére
logging.basicConfig(level=logging.INFO)
class AdatFeldolgozo:
"""Egy erős és biztonságos osztály adatok feldolgozására."""
def __init__(self, adatok: List[float]) -> None:
self.adatok = adatok
def atlag_szamitasa(self) -> Optional[float]:
"""Kiszámítja az adatok átlagát, kezeli a nullával való osztást."""
if not self.adatok:
logging.warning("Az adathalmaz üres, nem számolható átlag.")
return None
try:
osszeg: float = sum(self.adatok)
meret: int = len(self.adatok)
eredmeny: float = osszeg / meret
return eredmeny
except ZeroDivisionError as e:
logging.error(f"Matematikai hiba történt: {e}")
return None
def statisztika(self) -> Dict[str, Optional[float]]:
"""Visszaadja a legfontosabb statisztikai értékeket."""
if not self.adatok:
return {"maximum": None, "atlag": None}
return {
"maximum": max(self.adatok),
"atlag": self.atlag_szamitasa()
}
# Főprogram futtatása
if __name__ == "__main__":
nyers_adatok: List[float] = [12.5, 42.1, 18.3, 99.0, 5.5]
feldolgozo = AdatFeldolgozo(nyers_adatok)
eredmeny = feldolgozo.statisztika()
logging.info(f"Statisztikai adatok: {eredmeny}")
--------------
Magyarázat;
### Mit csinálnak az egyes részek?
#### 1. Modulok importálása
```python
from typing import List, Dict, Optional
import logging
```
* `typing` → típusmegjelölésekhez (`List`, `Dict`, `Optional`)
* `logging` → naplóüzenetek kiírására
---
#### 2. Naplózás beállítása
```python
logging.basicConfig(level=logging.INFO)
```
Ez azt jelenti, hogy az `INFO` és magasabb szintű üzenetek megjelennek.
---
#### 3. Az `AdatFeldolgozo` osztály
```python
class AdatFeldolgozo:
```
Ez az osztály tárolja és feldolgozza az adatokat.
---
### Konstruktor
```python
def __init__(self, adatok):
self.adatok = adatok
```
Eltárolja a kapott számokat.
Például:
```python
[12.5, 42.1, 18.3, 99.0, 5.5]
```
---
### Átlag számítása
```python
def atlag_szamitasa(self):
```
Ha nincs adat:
```python
if not self.adatok:
```
akkor ezt írja ki:
```
WARNING: Az adathalmaz üres, nem számolható átlag.
```
és visszaad:
```python
None
```
Ha van adat:
```python
osszeg = sum(self.adatok)
```
```
12.5 + 42.1 + 18.3 + 99.0 + 5.5
= 177.4
```
```python
meret = len(self.adatok)
```
```
5
```
```python
eredmeny = osszeg / meret
```
```
177.4 / 5 = 35.48
```
---
### Statisztika készítése
```python
def statisztika(self):
```
Visszaad egy szótárat:
```python
{
"maximum": max(self.adatok),
"atlag": self.atlag_szamitasa()
}
```
A megadott adatoknál:
```python
{
"maximum": 99.0,
"atlag": 35.48
}
```
---
### Főprogram
```python
nyers_adatok = [12.5, 42.1, 18.3, 99.0, 5.5]
```
Létrehozza az adatokat.
Majd:
```python
feldolgozo = AdatFeldolgozo(nyers_adatok)
```
Ezután:
```python
eredmeny = feldolgozo.statisztika()
```
Végül:
```python
logging.info(...)
```
Kiírja:
```
INFO:root:Statisztikai adatok: {'maximum': 99.0, 'atlag': 35.48}
```
---
----------------------------------------------
## Összefoglalva
A program:
1. eltárol egy számlistát,
2. kiszámolja az átlagot,
3. meghatározza a legnagyobb értéket,
4. egy szótárban visszaadja az eredményeket,
5. naplózza azokat a képernyőre.
Ez egy jól strukturált, objektumorientált példa, amely bemutatja az osztályok, a típusannotációk, a hibakezelés és a `logging` használatát. Továbbfejleszthető például minimum, medián, szórás vagy grafikonok készítésének támogatásával.
Nincsenek megjegyzések:
Megjegyzés küldése