From 8f23aa8c1af1c04ec440f1bd30a038589837ba09 Mon Sep 17 00:00:00 2001 From: Lara-Sofia Date: Tue, 4 Oct 2022 11:38:34 -0300 Subject: [PATCH] =?UTF-8?q?COM3-50538-Lara=20Sof=C3=ADa=20Cristofanelli?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- exercises/exercise1.py | 8 ++++++++ exercises/exercise2.py | 16 ++++++++++++++++ exercises/exercise3.py | 18 ++++++++++++++++++ exercises/exercise4.py | 13 +++++++++++++ exercises/exercise5.py | 33 +++++++++++++++++++++++++++++++++ 5 files changed, 88 insertions(+) diff --git a/exercises/exercise1.py b/exercises/exercise1.py index 4d88ccc..b85c48d 100644 --- a/exercises/exercise1.py +++ b/exercises/exercise1.py @@ -18,6 +18,14 @@ class Circle: - Utilizar Type Hints en todos los métodos y variables """ + def __init__(self, radio): + self.radio=radio + + def perimetro(self): + return round(self.radio*2*pi, 2) + + def area(self): + return round(pi*self.radio**2, 2) # NO MODIFICAR - INICIO # Test básico diff --git a/exercises/exercise2.py b/exercises/exercise2.py index 2b02c90..d60cee4 100644 --- a/exercises/exercise2.py +++ b/exercises/exercise2.py @@ -20,6 +20,22 @@ class Article: - No utilizar Properties - Utilizar Type Hints en todos los métodos y variables """ + __iva = 0.21 + + def __init__(self, nombre, costo, descuento = 0): + self.nombre = nombre + self.costo = costo + self.descuento = descuento + + def calcular_precio (self): + precioIva = round((self.costo * self.__iva) + self.costo,2) + precio = round((precioIva - precioIva * self.descuento),2) + return precio + + @classmethod + def actualizar_iva(cls, iva_nuevo): + cls.__iva = iva_nuevo + return cls.__iva # NO MODIFICAR - INICIO diff --git a/exercises/exercise3.py b/exercises/exercise3.py index 331440a..2f0c10f 100644 --- a/exercises/exercise3.py +++ b/exercises/exercise3.py @@ -15,6 +15,24 @@ class Article: - Utilizar Type Hints en todos los métodos y variables """ + __iva = 0.21 + + def __init__(self, nombre, costo, descuento = 0): + self.nombre = nombre + self.costo = costo + self.descuento = descuento + + @property #para atributos calculados + def precio(self): + precioIva = round((self.costo * self.__iva) + self.costo,2) + precio = round((precioIva - precioIva * self.descuento),2) + return precio + + @classmethod + def actualizar_iva(cls, iva_nuevo): + cls.__iva = iva_nuevo + return cls.__iva + # NO MODIFICAR - INICIO # Test parámetro obligatorio diff --git a/exercises/exercise4.py b/exercises/exercise4.py index b424db7..5fc821e 100644 --- a/exercises/exercise4.py +++ b/exercises/exercise4.py @@ -22,6 +22,19 @@ - No utilizar properties - Utilizar Type Hints en todos los métodos y variables """ +@dataclass #lo mismo que definir un constructor +class Materia(): + nombre: str + +@dataclass +class Carrera(): + longitud: list + + def __str__(self): + return f"Carrera(materias={self.longitud})" + + def __len__(self): + return len(self.longitud) # NO MODIFICAR - INICIO diff --git a/exercises/exercise5.py b/exercises/exercise5.py index 92d717c..90218ea 100644 --- a/exercises/exercise5.py +++ b/exercises/exercise5.py @@ -37,11 +37,44 @@ from dataclasses import dataclass from typing import List +@dataclass +class Contribuyente(ABC): + @abstractmethod + def calcular_sueldo(self): + pass + +@dataclass +class Empleado(Contribuyente): + sueldo: float + + def calcular_sueldo(self): + return self.sueldo - (self.sueldo * 0.17) + +@dataclass +class Monotributista(Contribuyente): + sueldo: float + + def calcular_sueldo(self): + if (self.sueldo < (370000/12)): + return self.sueldo - 2646.22 + elif (self.sueldo < (550000/12)): + return self.sueldo - 2958.95 + elif (self.sueldo < (770000/12)): + return self.sueldo - 3382.62 + else: + return self.sueldo - 3988.85 + + def calcular_sueldos(contribuyentes: List[Contribuyente]): """Data una lista de contribuyentes, devuelve una lista de los sueldos de cada uno.""" + sueldos=[] + for i in contribuyentes: + sueldos.append(i.calcular_sueldo()) + return sueldos + # NO MODIFICAR - INICIO assert type(Contribuyente) == abc.ABCMeta, "Contribuyente debe ser abstracta"