Folytatjuk az OOP-s feladatokat.

Feldolgozott fájl: letöltés

Osztály definiálása, fájl beolvasása

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

1 - Mennyi a magyarok átlag pénze?

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}")

2 - Hány ember kedvenc színe a zöld?

dbzold = 0
for ember in emberek:
    if ember.favourite_color == "green":
        dbzold += 1

print(f"{dbzold} ember kedvenc színe a zöld.")

3 - Írjuk ki az SUV-t vezető könyvelőket

for ember in emberek:
    if ember.job_area == "Accounts" and ember.vehicle_type == "SUV":
        print(ember)

4 - Van-e olyan ember az USA-ban, akinek több, mint $20.000-ja van?

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

5 - Amerikai Szamoa - pénzek mediánja

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}")

Könyvtárak - ismétlés

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

6 - Számoljuk meg munkaterületenként, hogy hány embernek van több, mint $20.000-ja

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]}")

7 - Számoljuk ki az átlag pénzeket kedvenc színenként

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}")