From 93b576d60bce4506b14e1cfdae59df965495205a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C2=96IsTincho?= Date: Tue, 13 Sep 2022 16:17:59 -0300 Subject: [PATCH 1/4] Update exercise1.py --- exercises/exercise1.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/exercises/exercise1.py b/exercises/exercise1.py index 4d88ccc..41eed72 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 From 0941e4d3395e06bfe62802cbf905205ff8ac0d20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C2=96IsTincho?= Date: Wed, 28 Sep 2022 21:58:30 -0300 Subject: [PATCH 2/4] actualizacion de los archivos --- exercises/exercise2.py | 32 ++++++++++++++++++++++++++++---- exercises/exercise3.py | 23 +++++++++++++++++++++++ exercises/exercise4.py | 20 ++++++++++++++++---- exercises/exercise5.py | 21 +++++++++++++++++++++ 4 files changed, 88 insertions(+), 8 deletions(-) diff --git a/exercises/exercise2.py b/exercises/exercise2.py index 2b02c90..ace2c1b 100644 --- a/exercises/exercise2.py +++ b/exercises/exercise2.py @@ -1,6 +1,4 @@ """Variables de Clase y Métodos de Clase.""" - - class Article: """Todos los artículos tienen un nombre y un costo, opcionalmente algunos tienen un porcentaje de descuento. @@ -19,8 +17,34 @@ class Article: - No utilizar Dataclasses - 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 # Test parámetro obligatorio diff --git a/exercises/exercise3.py b/exercises/exercise3.py index 331440a..193ead3 100644 --- a/exercises/exercise3.py +++ b/exercises/exercise3.py @@ -14,8 +14,31 @@ 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 + # NO MODIFICAR - INICIO # Test parámetro obligatorio try: diff --git a/exercises/exercise4.py b/exercises/exercise4.py index b424db7..80b03da 100644 --- a/exercises/exercise4.py +++ b/exercises/exercise4.py @@ -15,18 +15,30 @@ - Utilizar Dataclasses - Utilizar 2 clases - Utilizar 1 variables de instancia en cada clase - - Utilizar 1 método mágico + - Utilizar 2 método mágico - No utilizar variables de clase - No utilizar métodos de clase - No utilizar métodos de instancia - 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: +"""try: materia = Materia() assert False, "No se puede instanciar sin nombre" except TypeError: @@ -37,7 +49,7 @@ assert False, "No se puede instanciar sin materias" except TypeError: assert True - +""" # Test básico matematica = Materia("Matemática") assert matematica.nombre == "Matemática" diff --git a/exercises/exercise5.py b/exercises/exercise5.py index 92d717c..9c74d5f 100644 --- a/exercises/exercise5.py +++ b/exercises/exercise5.py @@ -41,6 +41,27 @@ def calcular_sueldos(contribuyentes: List[Contribuyente]): """Data una lista de contribuyentes, devuelve una lista de los sueldos de cada uno.""" + + + class Contribuyente(ABC): + @abstractmethod + def contribuyentes(self,sueldo): + self.sueldo = sueldo + + + class Monotributista: + def __init__(self,contribuyente): + + self.contribuyente=contribuyente + + def calcular_sueldos(self): + - + + + class Empleado: + def __init__(self,contribuyente): + + self.contribuyente=contribuyente # NO MODIFICAR - INICIO From 9da28ec7c5129f8f602a0a00c8de39ae54584965 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C2=96IsTincho?= Date: Wed, 28 Sep 2022 22:50:50 -0300 Subject: [PATCH 3/4] Update exercise5.py Terminado (Falta que funcionen los asserts) --- exercises/exercise5.py | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/exercises/exercise5.py b/exercises/exercise5.py index 9c74d5f..0e347cf 100644 --- a/exercises/exercise5.py +++ b/exercises/exercise5.py @@ -45,23 +45,28 @@ def calcular_sueldos(contribuyentes: List[Contribuyente]): class Contribuyente(ABC): @abstractmethod - def contribuyentes(self,sueldo): - self.sueldo = sueldo - - - class Monotributista: - def __init__(self,contribuyente): - - self.contribuyente=contribuyente - def calcular_sueldos(self): - - - - - class Empleado: - def __init__(self,contribuyente): + class Monotributista: + def __init__(self,sueldo): + self.sueldo=sueldo + @dataclass + def calcular_sueldos(self,sueldo): + if self.sueldo>(770000/12): + return self.sueldo-3988,85 + elif self.sueldo<(770000/12) and self.sueldo>(550000/12): + return self.sueldo-3382,62 + elif self.sueldo<(550000/12) and self.sueldo>(370000/12): + return self.sueldo-2958,95 + elif self.sueldo<(370000)/12: + return self.sueldo-2646,22 - self.contribuyente=contribuyente + class Empleado: + def __init__(self,sueldo): + self.sueldo=sueldo + + @dataclass + def calcular_sueldos(self): + return self.sueldo-(self.sueldo*0.17) # NO MODIFICAR - INICIO From 59d0452f45a65cfabbe059a80250a13693f005ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C2=96IsTincho?= Date: Mon, 3 Oct 2022 23:27:20 -0300 Subject: [PATCH 4/4] ejercicio 5 finalizado --- exercises/exercise5.py | 55 +++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/exercises/exercise5.py b/exercises/exercise5.py index 0e347cf..83b5f9f 100644 --- a/exercises/exercise5.py +++ b/exercises/exercise5.py @@ -40,33 +40,34 @@ def calcular_sueldos(contribuyentes: List[Contribuyente]): """Data una lista de contribuyentes, devuelve una lista de los sueldos de - cada uno.""" - - - class Contribuyente(ABC): - @abstractmethod - - class Monotributista: - def __init__(self,sueldo): - self.sueldo=sueldo - @dataclass - def calcular_sueldos(self,sueldo): - if self.sueldo>(770000/12): - return self.sueldo-3988,85 - elif self.sueldo<(770000/12) and self.sueldo>(550000/12): - return self.sueldo-3382,62 - elif self.sueldo<(550000/12) and self.sueldo>(370000/12): - return self.sueldo-2958,95 - elif self.sueldo<(370000)/12: - return self.sueldo-2646,22 - - class Empleado: - def __init__(self,sueldo): - self.sueldo=sueldo - - @dataclass - def calcular_sueldos(self): - return self.sueldo-(self.sueldo*0.17) + cada uno.""" + sueldos=[] + for elemento in contribuyentes: + sueldos.append(elemento.calcular_sueldo()) + return sueldos + +class Contribuyente(ABC): + @abstractmethod + def calcular_sueldo(self): + pass + +@dataclass +class Monotributista(Contribuyente): + sueldo:float + def calcular_sueldo(self): + if self.sueldo>(770000/12): + return self.sueldo-3988.85 + elif self.sueldo<(770000/12) and self.sueldo>(550000/12): + return self.sueldo-3382.62 + elif self.sueldo<(550000/12) and self.sueldo>(370000/12): + return self.sueldo-2958.95 + elif self.sueldo<(370000)/12: + return self.sueldo-2646.22 +@dataclass +class Empleado(Contribuyente): + sueldo:float + def calcular_sueldo(self): + return self.sueldo-(self.sueldo*0.17) # NO MODIFICAR - INICIO