diff --git a/exercises/exercise1.py b/exercises/exercise1.py index 4d88ccc..9411d32 100644 --- a/exercises/exercise1.py +++ b/exercises/exercise1.py @@ -4,6 +4,14 @@ class Circle: + def __init__(self, radio: float) -> None: + self.radio = radio + + def area(self) -> float: + return round((pi * (self.radio ** 2)), 2) + + def perimetro(self) -> float: + return round((2 * pi * self.radio), 2) """Todo cículo tiene un radio y se desea conocer tanto el área como el perímetro (longitud de circunferencia). diff --git a/exercises/exercise2.py b/exercises/exercise2.py index 2b02c90..388c173 100644 --- a/exercises/exercise2.py +++ b/exercises/exercise2.py @@ -2,6 +2,24 @@ class Article: + iva: float = 0.21 + + def __init__(self, nombre: str, costo: float, descuento: float = None) -> None: + self.nombre = nombre + self.costo = costo + self.descuento = descuento + + + def calcular_precio(self) -> float: + precio = (self.costo + (self.costo * self.iva)) + if self.descuento != None: + return round(precio - (precio * self.descuento), 2) + return round(precio, 2) + + @classmethod + def actualizar_iva(cls, iva: float) -> None: + cls.iva = iva + """Todos los artículos tienen un nombre y un costo, opcionalmente algunos tienen un porcentaje de descuento. diff --git a/exercises/exercise3.py b/exercises/exercise3.py index 331440a..c5cf6fe 100644 --- a/exercises/exercise3.py +++ b/exercises/exercise3.py @@ -2,6 +2,23 @@ class Article: + iva: float = 0.21 + + def __init__(self, nombre: str, costo: float, descuento: float = None) -> None: + self.nombre = nombre + self.costo = costo + self.descuento = descuento + self.precio + @property + def precio(self) -> float: + precio = (self.costo + (self.costo * self.iva)) + if self.descuento != None: + return round(precio - (precio * self.descuento), 2) + return round(precio, 2) + @classmethod + def actualizar_iva(cls, iva: float) -> None: + cls.iva = iva + """Re-Escribir el ejercicio anterior utilizando una property en vez de un método de instancia. diff --git a/exercises/exercise4.py b/exercises/exercise4.py index b424db7..fa97260 100644 --- a/exercises/exercise4.py +++ b/exercises/exercise4.py @@ -24,7 +24,22 @@ """ + # NO MODIFICAR - INICIO +@dataclass +class Materia: + nombre: str + +@dataclass +class Carrera: + longitud : list + + def __str__(self): + return f"Carrera(materias=[{self.longitud[0]}, {self.longitud[1]}])" + + def __len__ (self): + return len(self.longitud) + # Test parámetro obligatorio try: materia = Materia() diff --git a/exercises/exercise5.py b/exercises/exercise5.py index 92d717c..affdf78 100644 --- a/exercises/exercise5.py +++ b/exercises/exercise5.py @@ -38,10 +38,43 @@ from typing import List -def calcular_sueldos(contribuyentes: List[Contribuyente]): - """Data una lista de contribuyentes, devuelve una lista de los sueldos de - cada uno.""" - +def calcular_sueldos(contribuyentes: List): + lista = [] + monotributista = contribuyentes[0] + empleado = contribuyentes[1] + lista.append(monotributista.calcular_sueldo()) + lista.append(empleado.calcular_sueldo()) + + return lista + + +@dataclass +class Contribuyente(ABC): + sueldo: int + +@dataclass +class Empleado(Contribuyente): + sueldo: int + + def calcular_sueldo(self): + return self.sueldo - (self.sueldo* 0.17) + + +@dataclass +class Monotributista(Contribuyente): + sueldo: int + + def calcular_sueldo(self): + if (self.sueldo*12 < 370000): + impuesto = 2646.22 + elif(self.sueldo*12 < 550000): + impuesto = 2958.95 + elif (self.sueldo*12 < 770000): + impuesto = 3382.62 + else: + impuesto = 3988.85 + + return self.sueldo - impuesto # NO MODIFICAR - INICIO assert type(Contribuyente) == abc.ABCMeta, "Contribuyente debe ser abstracta"