Folytatjuk az OOP-s feladatokat.
Feldolgozott fájl: letöltés
# Adatszerkezet az adatok tárolására
class Person:
# Bemenetként a konstruktor egy-egy teljes sort kap a fájlból
def __init__(self, bemenet):
b = bemenet.split(";")
self.firstname = b[0].strip('"')
self.lastname = b[1].strip('"')
self.country = b[2].strip('"')
self.city = b[3].strip('"')
self.money = float(b[4].strip('"').strip("$"))
self.job_area = b[5].strip('"')
self.favourite_color = b[6].strip('"')
self.vehicle_type = b[7].strip('"')
def __str__(self):
return f"{self.firstname} {self.lastname} ({self.country})"
# Fájl beolvasása
sorok = []
with open("userdata.csv", "r", encoding="utf8") as f:
sorok = f.read().splitlines()
# Adatok átalakítása
emberek = []
for sor in sorok[1:]:
emberek.append(Person(sor))
osszeg = 0
db = 0
for ember in emberek:
if ember.country == "Hungary":
db += 1
osszeg += ember.money
atlag = osszeg / db
print(f"A magyarok átlag pénze: ${atlag:.2f}")
dbzold = 0
for ember in emberek:
if ember.favourite_color == "green":
dbzold += 1
print(f"{dbzold} ember kedvenc színe a zöld.")
for ember in emberek:
if ember.job_area == "Accounts" and ember.vehicle_type == "SUV":
print(ember)
van = False
for ember in emberek:
if ember.country == "United States of America" and ember.money > 20000:
van = True
break
print(f"{"Van" if van else "Nincs"} olyan ember az USA-ban, akinek több, mint $20000-ja van.")
penzek = []
for ember in emberek:
if ember.country == "American Samoa":
penzek.append(ember.money)
# Sorba kell rakni a kiválogatott elemeket, mert a medián csak rendezett sorozaton értelmezhető
penzek.sort()
median = 0
h = len(penzek)
# Ha páros hosszú a sorozat, a két középső elem átlagát vesszük
# Indexeléshez //-t használunk, mert csak egész számmal lehet indexelni
if h % 2 == 0:
median = (penzek[h // 2 - 1] + penzek[h // 2]) / 2
else:
median = penzek[h // 2]
print(f"az Amerikai Szamoai emberek pénzének mediánja: ${median:.2f}")
konyvtar = {
"x": 4
}
konyvtar["x"] += 1
# konyvtar["y"] = konyvtar["y"] + 1 # HIBA
# Meg kell nézni, hogy egy adott kulcs már létre van-e hozva, mielőtt növelnénk az értékét
# Ha nincs, akkor létre kell hozni
if "y" not in konyvtar:
konyvtar["y"] = 0
konyvtar["y"] += 1
munkateruletek = {}
for ember in emberek:
if ember.money > 20000:
if ember.job_area not in munkateruletek:
munkateruletek[ember.job_area] = 0
munkateruletek[ember.job_area] += 1
for mt in munkateruletek:
print(f"{mt}:\t{munkateruletek[mt]}")
szinek_db = {}
szinek_osszeg = {}
for adat in adatok:
c = adat.favouritecolor
if c not in szinek_db:
szinek_db[c] = 0
szinek_osszeg[c] = 0
szinek_db[c] += 1
szinek_osszeg[c] += adat.money
print("Átlag pénzek színenként:")
szinek_atlag = {}
for szin in szinek_db:
szinek_atlag[szin] = szinek_osszeg[szin] / szinek_db[szin]
print(f"\t{szin}:\t${szinek_atlag[szin]:.2f}")