From d9bd4683d6cc1e08150b38b9057e6b069d362291 Mon Sep 17 00:00:00 2001 From: LuchoSantini Date: Tue, 4 Oct 2022 16:35:37 -0300 Subject: [PATCH] Ejercicios resueltos --- exercises/exercise1.py | 8 ++++++++ exercises/exercise2.py | 26 ++++++++++++++++++++++++++ exercises/exercise3.py | 21 +++++++++++++++++++-- exercises/exercise4.py | 13 +++++++++++++ exercises/exercise5.py | 36 ++++++++++++++++++++++++++++++++++++ 5 files changed, 102 insertions(+), 2 deletions(-) diff --git a/exercises/exercise1.py b/exercises/exercise1.py index 4d88ccc..326f682 100644 --- a/exercises/exercise1.py +++ b/exercises/exercise1.py @@ -17,7 +17,15 @@ class Circle: - No utilizar Properties - Utilizar Type Hints en todos los métodos y variables """ + def __init__(self, radio): + self.radio = radio + def area(self): + return round(pi * self.radio**2,2) + + + def perimetro(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..5b28fb7 100644 --- a/exercises/exercise2.py +++ b/exercises/exercise2.py @@ -20,6 +20,32 @@ class Article: - No utilizar Properties - Utilizar Type Hints en todos los métodos y variables """ + __iva = float(0.21) + + + def __init__(self,nombre,costo,descuento=0): + self.nombre = nombre + self.costo = costo + self.descuento = descuento + + @classmethod + def actualizar_iva(cls,nuevoIva): + cls.__iva = nuevoIva + #metodo de innstancia + def calcular_precio(self): + precio_iva = round(self.costo + (self.costo * self.__iva),2) + precioTotal = round(precio_iva - precio_iva * self.descuento,2) + return precioTotal + + + def mostrar(self): + print(self.nombre) + #imprimir el costo + +ejemplo=Article("Auto",1) +ejemplo1=Article("moto",3) +ejemplo.mostrar() +ejemplo1.mostrar() # NO MODIFICAR - INICIO diff --git a/exercises/exercise3.py b/exercises/exercise3.py index 331440a..a10a9d9 100644 --- a/exercises/exercise3.py +++ b/exercises/exercise3.py @@ -14,8 +14,25 @@ class Article: - No utilizar Dataclasses - Utilizar Type Hints en todos los métodos y variables """ - - + __iva = float(0.21) + + def __init__(self,nombre,costo,descuento=0): + self.nombre = nombre + self.costo = costo + self.descuento = descuento + + @classmethod + def actualizar_iva(self,nuevoIva): + self.__iva = nuevoIva + + #Una property me sirve para definir un atributo CALCULADO + #Casos donde yo quiero tener un atributo pero tengo que hacer varios calculos + @property + def precio(self): + precio_iva = round(self.costo + (self.costo * self.__iva),2) + precioTotal = round(precio_iva - precio_iva * self.descuento,2) + return precioTotal + # NO MODIFICAR - INICIO # Test parámetro obligatorio try: diff --git a/exercises/exercise4.py b/exercises/exercise4.py index b424db7..d3544f2 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..7ec533a 100644 --- a/exercises/exercise5.py +++ b/exercises/exercise5.py @@ -38,9 +38,45 @@ from typing import List +class Contribuyente(ABC): + @abstractmethod + def calcular_sueldo(self): + pass + +@dataclass +class Empleado(Contribuyente): + sueldo:int + + def calcular_sueldo(self): + return self.sueldo*0.83 + +@dataclass +class Monotributista(Contribuyente): + sueldo:float + + def calcular_sueldo(self): + sueldo_bruto = self.sueldo*12 + + if sueldo_bruto<370000: + sueldo_mensual_final=self.sueldo-2646.22 + elif sueldo_bruto<550000: + sueldo_mensual_final=self.sueldo-2958.95 + elif sueldo_bruto<770000: + sueldo_mensual_final=self.sueldo-3382.62 + elif sueldo_bruto>770000: + sueldo_mensual_final=self.sueldo-3988.85 + return sueldo_mensual_final + + + def calcular_sueldos(contribuyentes: List[Contribuyente]): """Data una lista de contribuyentes, devuelve una lista de los sueldos de cada uno.""" + sueldos_vacios=[] + for i in contribuyentes: + sueldos_vacios.append(i.calcular_sueldo()) + return sueldos_vacios + # NO MODIFICAR - INICIO