3. hét - Feladatok

Osztályok

Bevezetés

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f"{self.name} (Age: {self.age})"

    def greet(self, person2):
        print(f"Hello {person2.name}! I am {self.name}.")

p1 = Person("John", 21)
print(p1.age)
p1.age = 34
print(p1.age)

print(p1)

p2 = Person("John2", 444)

p1.greet(p2)

Törtszámok megvalósítása

from math import gcd, lcm

# gcd = LNKO
# lcm = LKKT
# lnko = gcd(szam1, szam2)
# lkkt = lcm(szam1, szam2)

class Tort:
    def __init__(self, szamlalo, nevezo):
        self.szamlalo = int(szamlalo)
        self.nevezo = int(nevezo)

    def __str__(self):
        return f"{self.szamlalo} / {self.nevezo}"

    def reciprok(self):
        return Tort(self.nevezo, self.szamlalo)

    def szorzas(self, tort2):
        return Tort(self.szamlalo * tort2.szamlalo, self.nevezo * tort2.nevezo)

    def osztas(self, tort2):
        t2 = tort2.reciprok()
        return Tort(self.szamlalo * t2.szamlalo, self.nevezo * t2.nevezo)

    def osszeadas(self, tort2):
        lkkt = lcm(self.nevezo, tort2.nevezo)
        sz1 = self.szamlalo * (lkkt / self.nevezo)
        sz2 = tort2.szamlalo * (lkkt / tort2.nevezo)
        return Tort(sz1 + sz2, lkkt)

    def kivonas(self, tort2):
        lkkt = lcm(self.nevezo, tort2.nevezo)
        sz1 = self.szamlalo * (lkkt / self.nevezo)
        sz2 = tort2.szamlalo * (lkkt / tort2.nevezo)
        return Tort(sz1 - sz2, lkkt)

t1 = Tort(2, 3)
t2 = Tort(5, 6)

print(t1)
print(t1.reciprok())

print(f"t1 / t2: {t1.osztas(t2)}")
print(f"t1 * t2: {t1.szorzas(t2)}")
print(f"t1 + t2: {t1.osszeadas(t2)}")
print(f"t1 - t2: {t1.kivonas(t2)}")

Fájlkezelés

Fájl beolvasása

Minta fájl:

Ez
egy több
soros
fájl.

Beolvasás:

sorok = []

with open("szoveg.txt", "r", encoding="utf8") as f:
    sorok = f.read().splitlines()

print(sorok)

CSV beolvasása és feldolgozása

Minta fájl: userdata.csv

class Person:
    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})"

sorok = []
with open("userdata.csv", "r", encoding="utf8") as f:
    sorok = f.read().splitlines()

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

# Hány ember kedvenc színe a zöld? (green)
dbzold = 0
for ember in emberek:
    if ember.favourite_color == "green":
        dbzold += 1

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