Docy

Több adattípus

Estimated reading: 3 minutes 0 views
Fájlfeldolgozásos feladat

Első lépés

Az alloviz osztály definiálása és inicializálása.

				
					class alloviz:
    def __init__(self, sor):
        id, nev, tipus, terulet, vizgyujto = sor.split(';')
        self.id = int(id)
        self.nev = nev
        self.tipus = tipus if tipus!='NULL' else ''
        self.terulet = float(terulet.replace(',', '.')) if terulet!='NULL' else 0
        self.vizgyujto = int(vizgyujto) if vizgyujto!='NULL' else 0

				
			
  • Az osztályban definiáljuk az __init__ nevű metódust, amely az objektum inicializálásáért felelős.
  • A metódus paraméterként kapja meg a sor értéket, amely a feldolgozandó adatokat tartalmazza.
  • A sor értéket pontosvesszővel elválasztott adatokra bontjuk a split(';') metódus segítségével.
  • Az adatokat külön változóknak rendeljük, majd ezeket az objektum attribútumainak állítjuk be.
  • Az id attribútumot egész számként inicializáljuk az int(id) kifejezéssel.
  • A terulet attribútumot lebegőpontos számként inicializáljuk a float(terulet.replace(',', '.')) kifejezéssel, ahol a , karaktereket a . karakterre cseréljük.
  • A vizgyujto attribútumot egész számként inicializáljuk az int(vizgyujto) kifejezéssel.
  • Ha a tipus vagy terulet értéke „NULL”, akkor azokat üres stringgel ('') vagy 0-val inicializáljuk.

Második lépés

Az adatok beolvasása és feldolgozása a fájlból.

				
					l = []
with open ('alloviz.txt', 'r', encoding='utf-8') as f:
    for sor in f.read().splitlines()[1:]:
        l.append(alloviz(sor))
				
			
  • Létrehozunk egy üres listát l néven, amely az alloviz objektumokat fogja tárolni.
  • Megnyitjuk a alloviz.txt fájlt olvasásra, és az f nevű változóhoz rendeljük.
  • A fájl tartalmát beolvassuk, majd soronként feldolgozzuk.
  • A sorokat a splitlines() metódussal szétválasztjuk, majd a lista második elemtől (az első sort kihagyva) végigmegyünk a for ciklussal.
  • Minden sorhoz létrehozunk egy alloviz objektumot, amelyet a sorral példányosítunk, majd hozzáadjuk a l listához.

Harmadik lépés

Az adatok elemzése és eredmények kiírása.

				
					print('3.1 feladat:')
print(f'Az adatbázisban {len(l)} tó adatai szerepelnek.')

print('3.2 feladat:')
osszeg = 0
db = 0
for e in l:
    if e.terulet != 0:
        osszeg += e.terulet
        db += 1

print(f'Az állóvizek területének átlaga {osszeg/db:.2f}')
				
			
  • Kiírjuk a l lista elemeinek számát a len(l) kifejezéssel.
  • Ezután inicializálunk két változót: osszeg és db 0 értékkel.
  • Végigmegyünk a l lista elemein a for ciklus segítségével.

Teljes kód

				
					class alloviz:
    def __init__(self, sor):
        id, nev, tipus, terulet, vizgyujto = sor.split(';')
        self.id = int(id)
        self.nev = nev
        self.tipus = tipus if tipus!='NULL' else ''
        self.terulet = float(terulet.replace(',', '.')) if terulet!='NULL' else 0
        self.vizgyujto = int(vizgyujto) if vizgyujto!='NULL' else 0

l = []
with open ('alloviz.txt', 'r', encoding='utf-8') as f:
    for sor in f.read().splitlines()[1:]:
        l.append(alloviz(sor))

print('3.1 feladat:')
print(f'Az adatbázisban {len(l)} tó adatai szerepelnek.')


print('3.2 feladat:')
osszeg = 0
db = 0
for e in l:
    if e.terulet != 0:
        osszeg += e.terulet
        db += 1

print(f'Az állóvizek területének átlaga {osszeg/db:.2f}')
				
			
				
					3.1 feladat:
Az adatbázisban 245 tó adatai szerepelnek.
3.2 feladat:
Az állóvizek területének átlaga 5.46
				
			

Leave a Comment

Megosztom ezt a leírást
Tartalom