From 7a48ab3c9d1fd0a2c67e940e8212c3253cdff49d Mon Sep 17 00:00:00 2001 From: ThiagoCingolani Date: Thu, 6 Oct 2022 00:16:49 +0200 Subject: [PATCH] Finalizado Practica 3 --- exercises/exercise1.py | 6 ++++++ exercises/exercise2.py | 14 ++++++++++++++ exercises/exercise3.py | 18 ++++++++++++++++-- exercises/exercise4.py | 11 ++++++++++- exercises/exercise5.py | 30 +++++++++++++++++++++++++++++- 5 files changed, 75 insertions(+), 4 deletions(-) diff --git a/exercises/exercise1.py b/exercises/exercise1.py index 4d88ccc..58b13ed 100644 --- a/exercises/exercise1.py +++ b/exercises/exercise1.py @@ -17,8 +17,14 @@ 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(2 * self.radio * pi, 2) # NO MODIFICAR - INICIO # Test básico circle = Circle(1) diff --git a/exercises/exercise2.py b/exercises/exercise2.py index 2b02c90..e9e1989 100644 --- a/exercises/exercise2.py +++ b/exercises/exercise2.py @@ -20,8 +20,22 @@ 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): + 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 try: diff --git a/exercises/exercise3.py b/exercises/exercise3.py index 331440a..783f0c0 100644 --- a/exercises/exercise3.py +++ b/exercises/exercise3.py @@ -14,8 +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 try: diff --git a/exercises/exercise4.py b/exercises/exercise4.py index b424db7..5cd76a7 100644 --- a/exercises/exercise4.py +++ b/exercises/exercise4.py @@ -22,8 +22,17 @@ - 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 # Test parámetro obligatorio try: diff --git a/exercises/exercise5.py b/exercises/exercise5.py index 92d717c..6d4ece2 100644 --- a/exercises/exercise5.py +++ b/exercises/exercise5.py @@ -37,11 +37,39 @@ from dataclasses import dataclass from typing import List +@dataclass +class Contribuyente (ABC): + + @abstractmethod + def calcular_sueldo(self): + pass + +@dataclass +class Empleado(Contribuyente): + sueldo: float + def calcular_sueldo(self): + return self.sueldo - (self.sueldo * 0.17) + +@dataclass +class Monotributista(Contribuyente): + sueldo: float + def calcular_sueldo(self) -> float: + if self.sueldo < (370000/12): + return self.sueldo - 2646.22 + elif self.sueldo < (550000/12): + return self.sueldo - 2958.95 + elif self.sueldo < (770000/12): + return self.sueldo - 3382.62 + elif self.sueldo > (770000/12): + return self.sueldo - 3988.85 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"