From 33194f1c4033d92f2465099b614047a049827562 Mon Sep 17 00:00:00 2001 From: COTTIER SOLANGE Date: Tue, 4 Oct 2022 10:00:41 -0300 Subject: [PATCH] Practica 3 Python TUP --- exercises/exercise1.py | 9 ++++++++ exercises/exercise2.py | 15 +++++++++++++ exercises/exercise3.py | 15 +++++++++++++ exercises/exercise4.py | 13 +++++++++++ exercises/exercise5.py | 49 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 101 insertions(+) diff --git a/exercises/exercise1.py b/exercises/exercise1.py index 4d88ccc..873a106 100644 --- a/exercises/exercise1.py +++ b/exercises/exercise1.py @@ -17,6 +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*pow(self.radio, 2), 2) + + def perimetro(self): + return round(2*pi*self.radio, 2) + # NO MODIFICAR - INICIO diff --git a/exercises/exercise2.py b/exercises/exercise2.py index 2b02c90..a7a4a74 100644 --- a/exercises/exercise2.py +++ b/exercises/exercise2.py @@ -20,6 +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): + self.nombre = nombre + self.costo = costo + self.descuento = descuento + + def calcular_precio(self): + precio = round(self.costo + (self.costo * self.__iva) ,2) + return round(precio - (self.descuento * precio), 2) + + @classmethod + def actualizar_iva(cls, iva): + cls.__iva = iva + # NO MODIFICAR - INICIO diff --git a/exercises/exercise3.py b/exercises/exercise3.py index 331440a..64a5b9b 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) + return round(precio - (self.descuento * precio), 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..b7e1622 100644 --- a/exercises/exercise4.py +++ b/exercises/exercise4.py @@ -23,7 +23,20 @@ - 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[0]}, {self.longitud[1]}])" + + 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..7e4e357 100644 --- a/exercises/exercise5.py +++ b/exercises/exercise5.py @@ -42,6 +42,55 @@ def calcular_sueldos(contribuyentes: List[Contribuyente]): """Data una lista de contribuyentes, devuelve una lista de los sueldos de cada uno.""" +import abc +from abc import ABC, abstractmethod +from dataclasses import dataclass +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"