From 7e2f57d297f37d1285997240172d59d085e07984 Mon Sep 17 00:00:00 2001 From: Ayelen Romero Date: Wed, 5 Oct 2022 22:22:45 -0300 Subject: [PATCH] Com4-Grupo 7- Ayelen Romero --- exercises/exercise1.py | 7 +++++++ exercises/exercise2.py | 17 +++++++++++++++++ exercises/exercise3.py | 17 ++++++++++++++++- exercises/exercise4.py | 13 +++++++++++++ exercises/exercise5.py | 38 ++++++++++++++++++++++++++++++++++++-- 5 files changed, 89 insertions(+), 3 deletions(-) diff --git a/exercises/exercise1.py b/exercises/exercise1.py index 4d88ccc..aee0d3d 100644 --- a/exercises/exercise1.py +++ b/exercises/exercise1.py @@ -18,6 +18,13 @@ class Circle: - Utilizar Type Hints en todos los métodos y variables """ + def __init__(self, radio): + self.radio = radio + + def perimetro(self): + return round(2*self.radio*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..10ebfac 100644 --- a/exercises/exercise2.py +++ b/exercises/exercise2.py @@ -21,6 +21,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 + + def calcular_precio(self): + precio_iva = round((self.costo * self.__iva) + self.costo, 2) + precio = round((precio_iva - precio_iva * 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/exercise3.py b/exercises/exercise3.py index 331440a..4d30c39 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): + self.nombre=nombre + self.costo=costo + self.descuento=descuento + +@property +def precio(self): + precio = round(self.costo + (self.costo * self.__iva),2) + precio_final = round(precio - (self.descuento * precio),2) + return precio_final + +@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..e8781f9 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 +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..9ca61ee 100644 --- a/exercises/exercise5.py +++ b/exercises/exercise5.py @@ -38,15 +38,49 @@ from typing import List +class Contribuyente(ABC): + @abstractmethod + def calcular_sueldo(self): + pass + + +@dataclass +class Empleado(Contribuyente): + ingreso: float + + def calcular_sueldo(self): + return self.ingreso*0.83 + + +@dataclass +class Monotributista(Contribuyente): + ingreso: float + + def calcular_sueldo(self): + if (self.ingreso*12 < 370000): + sueldo = self.ingreso-2646.22 + elif (self.ingreso*12 < 550000 and self.ingreso*12 >= 370000): + sueldo = self.ingreso-2958.95 + elif (self.ingreso*12 < 770000 and self.ingreso*12 >= 550000): + sueldo = self.ingreso-3382.62 + else: + sueldo = self.ingreso-3988.85 + return sueldo + + 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()