From ff4ec44d012575c5bb62c43e1a1b1e3151abb4ee Mon Sep 17 00:00:00 2001 From: Azul Cura Date: Tue, 4 Oct 2022 21:03:22 -0300 Subject: [PATCH 1/2] Practica 3 --- exercises/exercise1.py | 8 ++++++++ exercises/exercise2.py | 18 ++++++++++++++++++ exercises/exercise3.py | 20 ++++++++++++++++++++ exercises/exercise4.py | 15 +++++++++++++++ exercises/exercise5.py | 41 +++++++++++++++++++++++++++++++++++++---- 5 files changed, 98 insertions(+), 4 deletions(-) diff --git a/exercises/exercise1.py b/exercises/exercise1.py index 4d88ccc..9411d32 100644 --- a/exercises/exercise1.py +++ b/exercises/exercise1.py @@ -4,6 +4,14 @@ class Circle: + def __init__(self, radio: float) -> None: + self.radio = radio + + def area(self) -> float: + return round((pi * (self.radio ** 2)), 2) + + def perimetro(self) -> float: + return round((2 * pi * self.radio), 2) """Todo cículo tiene un radio y se desea conocer tanto el área como el perímetro (longitud de circunferencia). diff --git a/exercises/exercise2.py b/exercises/exercise2.py index 2b02c90..388c173 100644 --- a/exercises/exercise2.py +++ b/exercises/exercise2.py @@ -2,6 +2,24 @@ class Article: + iva: float = 0.21 + + 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 + def actualizar_iva(cls, iva: float) -> None: + cls.iva = iva + """Todos los artículos tienen un nombre y un costo, opcionalmente algunos tienen un porcentaje de descuento. diff --git a/exercises/exercise3.py b/exercises/exercise3.py index 331440a..fe759f3 100644 --- a/exercises/exercise3.py +++ b/exercises/exercise3.py @@ -2,6 +2,26 @@ class Article: + iva: float = 0.21 + + def __init__(self, nombre: str, costo: float, descuento: float = None) -> None: + self.nombre = nombre + self.costo = costo + self.descuento = descuento + self.precio + + # Proporty me sirve para definir un atributo calculado. + @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 + """Re-Escribir el ejercicio anterior utilizando una property en vez de un método de instancia. diff --git a/exercises/exercise4.py b/exercises/exercise4.py index b424db7..fa97260 100644 --- a/exercises/exercise4.py +++ b/exercises/exercise4.py @@ -24,7 +24,22 @@ """ + # NO MODIFICAR - INICIO +@dataclass +class Materia: + nombre: str + +@dataclass +class Carrera: + longitud : list + + def __str__(self): + return f"Carrera(materias=[{self.longitud[0]}, {self.longitud[1]}])" + + def __len__ (self): + return len(self.longitud) + # Test parámetro obligatorio try: materia = Materia() diff --git a/exercises/exercise5.py b/exercises/exercise5.py index 92d717c..affdf78 100644 --- a/exercises/exercise5.py +++ b/exercises/exercise5.py @@ -38,10 +38,43 @@ from typing import List -def calcular_sueldos(contribuyentes: List[Contribuyente]): - """Data una lista de contribuyentes, devuelve una lista de los sueldos de - cada uno.""" - +def calcular_sueldos(contribuyentes: List): + lista = [] + monotributista = contribuyentes[0] + empleado = contribuyentes[1] + lista.append(monotributista.calcular_sueldo()) + lista.append(empleado.calcular_sueldo()) + + return lista + + +@dataclass +class Contribuyente(ABC): + sueldo: int + +@dataclass +class Empleado(Contribuyente): + sueldo: int + + def calcular_sueldo(self): + return self.sueldo - (self.sueldo* 0.17) + + +@dataclass +class Monotributista(Contribuyente): + sueldo: int + + def calcular_sueldo(self): + if (self.sueldo*12 < 370000): + impuesto = 2646.22 + elif(self.sueldo*12 < 550000): + impuesto = 2958.95 + elif (self.sueldo*12 < 770000): + impuesto = 3382.62 + else: + impuesto = 3988.85 + + return self.sueldo - impuesto # NO MODIFICAR - INICIO assert type(Contribuyente) == abc.ABCMeta, "Contribuyente debe ser abstracta" From 96bb6e426784eed6026fbc54b104a53b39cd8f9f Mon Sep 17 00:00:00 2001 From: Azul Cura Date: Tue, 4 Oct 2022 21:13:44 -0300 Subject: [PATCH 2/2] Practica 3 --- exercises/exercise3.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/exercises/exercise3.py b/exercises/exercise3.py index fe759f3..c5cf6fe 100644 --- a/exercises/exercise3.py +++ b/exercises/exercise3.py @@ -9,15 +9,12 @@ def __init__(self, nombre: str, costo: float, descuento: float = None) -> None: self.costo = costo self.descuento = descuento self.precio - - # Proporty me sirve para definir un atributo calculado. @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