From 0558d103d7d078aed8e9f18d438b1530ad80d926 Mon Sep 17 00:00:00 2001 From: Franco Date: Wed, 5 Oct 2022 17:52:50 -0300 Subject: [PATCH] update --- exercises/exercise1.py | 9 +++++++++ exercises/exercise2.py | 19 +++++++++++++++++- exercises/exercise3.py | 18 +++++++++++++++++ exercises/exercise4.py | 13 ++++++++++++ exercises/exercise5.py | 45 ++++++++++++++++++++++++++++++++++++++++-- 5 files changed, 101 insertions(+), 3 deletions(-) diff --git a/exercises/exercise1.py b/exercises/exercise1.py index 4d88ccc..f69902c 100644 --- a/exercises/exercise1.py +++ b/exercises/exercise1.py @@ -18,6 +18,15 @@ class Circle: - Utilizar Type Hints en todos los métodos y variables """ + def __init__(self, radio): # Variable de instancia + self.radio = radio + + def area(self): # Metodo de instancia + return round((pi * (self.radio ** 2)), 2) + + def perimetro(self): + return round((2 * pi * self.radio), 2) + # NO MODIFICAR - INICIO # Test básico diff --git a/exercises/exercise2.py b/exercises/exercise2.py index 2b02c90..6135dc7 100644 --- a/exercises/exercise2.py +++ b/exercises/exercise2.py @@ -12,7 +12,7 @@ class Article: los descuentos si hubiera. Redondear a 2 decimales. Restricciones: - - Utilizar 3 variables de instancia + - Utilizar 3 variables de instancia * - Utilizar 1 método de instancia - Utilizar 1 variable de clase - Utilizar 1 método de clase @@ -21,6 +21,23 @@ class Article: - Utilizar Type Hints en todos los métodos y variables """ + __iva = 0.21 # Variable de clase (fuera del metodo constructor) + + 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 # Metodo de clase + def actualizar_iva(cls, iva: float) -> None: + cls.__iva = iva # cls hace referencia a la clase + # NO MODIFICAR - INICIO # Test parámetro obligatorio diff --git a/exercises/exercise3.py b/exercises/exercise3.py index 331440a..bdb3c9f 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: str, costo: float, descuento: float = None) -> None: + self.nombre = nombre + self.costo = costo + self.descuento = descuento + + @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 + # NO MODIFICAR - INICIO # Test parámetro obligatorio diff --git a/exercises/exercise4.py b/exercises/exercise4.py index b424db7..01f0bee 100644 --- a/exercises/exercise4.py +++ b/exercises/exercise4.py @@ -24,6 +24,19 @@ """ +@dataclass +class Materia: + nombre: str + + +@dataclass +class Carrera: + materias: list + + def __len__(self) -> int: + return len(self.materias) + + # NO MODIFICAR - INICIO # Test parámetro obligatorio try: diff --git a/exercises/exercise5.py b/exercises/exercise5.py index 92d717c..e271d79 100644 --- a/exercises/exercise5.py +++ b/exercises/exercise5.py @@ -38,15 +38,56 @@ from typing import List +"""Data una lista de contribuyentes, devuelve una lista de los sueldos de + cada uno.""" + + +@dataclass +class Contribuyente(ABC): + + @abstractmethod + def calcular_sueldo() -> float: + pass + + +@dataclass +class Empleado(Contribuyente): + monto: float + + def calcular_sueldo(self) -> float: + return self.monto - (self.monto * 0.17) + + +@dataclass +class Monotributista(Contribuyente): + monto: float + + def calcular_sueldo(self) -> float: + if (self.monto < (370000/12)): + return self.monto - 2646.22 + elif (self.monto < (5500000/12)): + return self.monto - 2958.95 + elif (self.monto < (770000/12)): + return self.monto - 3382.62 + elif (self.monto > (770000/12)): + return self.monto - 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" -assert issubclass(Empleado, Contribuyente), "Empleado debe heredar de Contribuyente" # noqa: 501 -assert issubclass(Monotributista, Contribuyente), "Monotributista debe heredar de Contribuyente" # noqa: 501 +assert issubclass(Empleado, Contribuyente), "Empleado debe heredar de Contribuyente" # noqa: 501 +assert issubclass(Monotributista, Contribuyente), "Monotributista debe heredar de Contribuyente" # noqa: 501 try: juan = Contribuyente()