From fba9a34fd159c1c49e81ff85cd6f5da26bbc2380 Mon Sep 17 00:00:00 2001 From: Mauricio-Roldan Date: Wed, 5 Oct 2022 18:03:57 -0300 Subject: [PATCH] practice 3 --- exercises/exercise1.py | 9 ++++++++- exercises/exercise2.py | 14 ++++++++++++++ exercises/exercise3.py | 17 ++++++++++++++++- exercises/exercise4.py | 10 ++++++++++ exercises/exercise5.py | 33 +++++++++++++++++++++++++++++++++ 5 files changed, 81 insertions(+), 2 deletions(-) diff --git a/exercises/exercise1.py b/exercises/exercise1.py index 4d88ccc..451d375 100644 --- a/exercises/exercise1.py +++ b/exercises/exercise1.py @@ -17,7 +17,14 @@ class Circle: - No utilizar Properties - Utilizar Type Hints en todos los métodos y variables """ - + def __init__(self, radio): + self.radio: float = radio + def area(self) -> float: + resultado = pi * self.radio ** 2 + return round(resultado, 2) + def perimetro(self) -> float: + resultado = 2 * pi * self.radio + return round(resultado, 2) # NO MODIFICAR - INICIO # Test básico diff --git a/exercises/exercise2.py b/exercises/exercise2.py index 2b02c90..6ae61ca 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.00) -> None: + self.nombre: str = nombre + self.costo: float = costo + self.descuento: float = descuento + + def calcular_precio(self) -> float: + subTotal = self.costo - self.costo * self.descuento + totalConIva = subTotal * (1 + self.iva) + return round(totalConIva, 2) + + @classmethod + def actualizar_iva(cls, iva): + cls.iva = iva # NO MODIFICAR - INICIO # Test parámetro obligatorio diff --git a/exercises/exercise3.py b/exercises/exercise3.py index 331440a..58b4109 100644 --- a/exercises/exercise3.py +++ b/exercises/exercise3.py @@ -14,7 +14,22 @@ class Article: - No utilizar Dataclasses - Utilizar Type Hints en todos los métodos y variables """ - + iva=0.21 + + def __init__(self, nombre, costo, descuento=0) -> None: + self.nombre=nombre + self.costo=costo + self.descuento=descuento + + @property + def precio(self): + subtotal = self.costo - self.costo * self.descuento + total_con_iva = subtotal * (1 + self.iva) + return round(total_con_iva, 2) + + @classmethod + def actualizar_iva(cls, __iva): + cls.iva = __iva # NO MODIFICAR - INICIO # Test parámetro obligatorio diff --git a/exercises/exercise4.py b/exercises/exercise4.py index b424db7..3c2e8db 100644 --- a/exercises/exercise4.py +++ b/exercises/exercise4.py @@ -22,6 +22,16 @@ - No utilizar properties - Utilizar Type Hints en todos los métodos y variables """ +@dataclass +class Materia: + nombre: str + +@dataclass +class Carrera: + materias: List[Materia] + + def __len__(self) -> int: + return len(self.materias) # NO MODIFICAR - INICIO diff --git a/exercises/exercise5.py b/exercises/exercise5.py index 92d717c..f80c44e 100644 --- a/exercises/exercise5.py +++ b/exercises/exercise5.py @@ -37,10 +37,43 @@ from dataclasses import dataclass from typing import List +@dataclass +class Contribuyente(ABC): + + @abstractmethod + def calcular_sueldo() -> float: + pass + +@dataclass +class Monotributista(Contribuyente): + monto: float + + def calcular_sueldo(self) -> float: + if(self.monto < (370000/12)): + return self.monto - 2646.22 + elif(self.monto < (550000/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 + + +@dataclass +class Empleado(Contribuyente): + monto: float + + def calcular_sueldo(self)-> float: + return self.monto - (self.monto * 0.17) + 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