diff --git a/README.md b/README.md index f62b235..f0ab647 100644 --- a/README.md +++ b/README.md @@ -15,3 +15,8 @@ sistema de Github Classroom simplemente ejecutando: - Ejercicio 3: Properties. - Ejercicio 4: DataClasses y Sobrecarga de operadores - Ejercicio 5: Herencia y Clases Abstractas. + +Integrantes: +-50636, Luciano Perg +-YYYY, Estefano Sobrero +-XXXX, Franco Procaccini \ No newline at end of file diff --git a/exercises/exercise1.py b/exercises/exercise1.py index 4d88ccc..6418bc6 100644 --- a/exercises/exercise1.py +++ b/exercises/exercise1.py @@ -20,6 +20,18 @@ class Circle: # NO MODIFICAR - INICIO +class Circle: + def _init_(self, radio): + self.radio = radio + + def area(self): + resultado= 3.14 * self.radio **2 + return resultado + + def perimetro(self) -> float: + resultado = 2 * 3.14 * self.radio + return resultado + # Test básico circle = Circle(1) assert circle.radio == 1 diff --git a/exercises/exercise2.py b/exercises/exercise2.py index 2b02c90..d7b3416 100644 --- a/exercises/exercise2.py +++ b/exercises/exercise2.py @@ -20,7 +20,21 @@ 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): + self.precio = (self.costo-self.descuento) * (self.iva + 1) + return round(self.precio,2) + + @classmethod + def actualizar_iva(cls, nuevoIva): + cls.iva = nuevoIva # NO MODIFICAR - INICIO # Test parámetro obligatorio diff --git a/exercises/exercise3.py b/exercises/exercise3.py index 331440a..7fd8c86 100644 --- a/exercises/exercise3.py +++ b/exercises/exercise3.py @@ -15,6 +15,23 @@ 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 + def precio(self): + self.total = (self.costo-self.descuento) * (self.iva + 1) + return round(self.total,2) + + @classmethod + def actualizar_iva(cls, nuevoIva): + cls.iva = nuevoIva + + # NO MODIFICAR - INICIO # Test parámetro obligatorio diff --git a/exercises/exercise4.py b/exercises/exercise4.py index b424db7..ab3068d 100644 --- a/exercises/exercise4.py +++ b/exercises/exercise4.py @@ -23,6 +23,17 @@ - Utilizar Type Hints en todos los métodos y variables """ +@dataclass +class Materia: + nombre: str + +@dataclass +class Carrera: + longitud: list + + # Método Mágico + def __str__(self) -> str: + return f"Carrera(materias={self.longitud})" # NO MODIFICAR - INICIO # Test parámetro obligatorio diff --git a/exercises/exercise5.py b/exercises/exercise5.py index 92d717c..2ce2d5a 100644 --- a/exercises/exercise5.py +++ b/exercises/exercise5.py @@ -38,10 +38,43 @@ from typing import List +class Contribuyente(ABC): + @abstractmethod + def calcular_sueldo(self): + pass + +@dataclass +class Empleado(Contribuyente): + salario: float + + def calcular_sueldo(self): + resta = (self.salario * 17) / 100 + sueldo = self.salario - resta + return sueldo + +@dataclass +class Monotributista(Contribuyente): + salario: float + + def calcular_sueldo(self): + if self.salario * 12 < 370000: + resta = 2646.22 + elif self.salario * 12 < 550000: + resta = 2958.95 + elif self.salario * 12 < 770000: + resta = 3382.62 + else: + resta = 3988.85 + sueldo = self.salario - resta + return sueldo + def calcular_sueldos(contribuyentes: List[Contribuyente]): """Data una lista de contribuyentes, devuelve una lista de los sueldos de cada uno.""" - + sueldos = [] + for x in contribuyentes: + sueldos.append(x.calcular_sueldo()) + return sueldos # NO MODIFICAR - INICIO assert type(Contribuyente) == abc.ABCMeta, "Contribuyente debe ser abstracta"