JanaEsther / programovani-v-pythonu-zima-2024

0 stars 0 forks source link

Domácí úkol 1 mám hotový #1

Open JanaEsther opened 6 months ago

JanaEsther commented 6 months ago

@KunaNeseNanuk Ahoj Aneto, mám hotový první domácí úkol. Prosím, podívej se na něj. Díky. Jana

pesikj commented 5 months ago

Ahoj @JanaEsther,

úkol je moc hezky zpracovaný, mám k tomu jen dvě drobné poznámky.

V zadání není popsáno, jestli bys měla zaokrouhlovat až na konci výpočtu nebo před násobením. Existuje tedy ještě varianta, že bys zaokrouhlovala až na konci výpočtu, tedy až po případném násobení. Tím samozřejmě neříkám, že to je chyba, jen mám zkušenost, že lidi si někdy neuvědomí, že zaokrouhlování je v podstatě ztráta nějaké informace a záleží na tom, kdy ho dělám.

    def calculate_tax(self):
        tax = self.area * self.locality.coefficient * 15
        if self.commercial:
            tax *= 2
        tax = math.ceil(tax)
        return math.ceil(tax)

V případě určení typu pozemku je řešení se slovníkem super a je i možné vložit slovník přímo ke třídě. Toto řešení se někdy používá, protože je efektivnější z pohledu paměti (slovník se uloží jenom jednou, protože je připojení ke třídě, neukládá se pro každý objekt zvlášť). Má to ale i nevýhodu v tom, že pokud bys slovník upravila, projeví se to u všech objektů, což nemusí být vždycky žádoucí.

class Estate(Property):
    type_coefficients = {
            'land': 0.85,
            'building site': 9,
            'forrest': 0.35
        }
    def __init__(self, locality, estate_type, area):
        super().__init__(locality)
        self.estate_type = estate_type
        self.area = area
JanaEsther commented 5 months ago

@pesikj Ahoj Jirko, díky moc . Chci se jenom zeptat, pokud zaokrouhlím až na konci výpočtu, bude výsledek přesnější nebo bude menší ztráta informace, není mi to moc jasné. Dále v případě slovníku, pokud chápu dobře, tak každé z obou řešení má své výhody a nevýhody. Mohl bys mi, prosím, uvést třeba nějaký příklad, kdy je lepší vložit slovník přímo ke třídě a naopak ?