Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 0 additions & 16 deletions .github/workflows/static-check.yml

This file was deleted.

12 changes: 12 additions & 0 deletions exercises/exercise1.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
"""Variables de Instancia y Métodos de instancia."""

from dataclasses import dataclass
from math import pi


Expand All @@ -20,6 +21,17 @@ class Circle:


# NO MODIFICAR - INICIO

def __init__(self, radio):
self.radio=radio

def perimetro(self):
return round((pi*self.radio)*2,2)

def area(self):
return round(pi*self.radio**2,2)


# Test básico
circle = Circle(1)
assert circle.radio == 1
Expand Down
22 changes: 22 additions & 0 deletions exercises/exercise2.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
"""Variables de Clase y Métodos de Clase."""


from typing import Optional


class Article:
"""Todos los artículos tienen un nombre y un costo, opcionalmente algunos
tienen un porcentaje de descuento.
Expand All @@ -23,7 +26,26 @@ class Article:


# NO MODIFICAR - INICIO
__iva: float = 0.21

def __init__(self, nombre, costo, descuento) -> None:
self.costo=costo
self.nombre=nombre
self.descuento=descuento

def calcular_precio(self) -> float:
return round((self.costo + self.__iva * self.costo) * (self.costo - self.costo * self.descuento), 2)

@classmethod
def actualizar_iva(cls, iva) -> float:
cls.__iva = iva

# Test parámetro obligatorio
articulo= Article("auto", 1, 0.21)
print(articulo.calcular_precio())
print(articulo.actualizar_iva())
print(articulo.actualizar_iva(0.25))

try:
article = Article()
assert False, "No se puede instanciar sin nombre ni costo"
Expand Down
16 changes: 16 additions & 0 deletions exercises/exercise3.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +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) -> None:
self.nombre=nombre
self.costo=costo
self.descuento=descuento

@property
def precio(self) -> float:
precio = round(self.costo + self.costo * self._iva, 2)
precioFinal = round(precio - precio * self.descuento, 2)
return precioFinal

@classmethod
def actualizar_iva(cls, iva) -> float:
cls._iva=iva


# NO MODIFICAR - INICIO
Expand Down
28 changes: 28 additions & 0 deletions exercises/exercise4.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
from typing import List




"""Una carrera tiene varias materias, la "longitud" de una carrera hace
referencia a cuantas materias tiene.

Expand All @@ -23,6 +25,32 @@
- Utilizar Type Hints en todos los métodos y variables
"""

@dataclass
class Materia():
nombre: str

@dataclass
class Carrera():
materias: List

#def __str__(self) -> str:
# return str([str(i) for i in self.materias])

def __len__(self) -> int:
return len(self.materias)






matematica = Materia("Matemática")

estadistica = Materia(nombre="Estadística")

obj = Carrera([matematica, estadistica])
print(obj)


# NO MODIFICAR - INICIO
# Test parámetro obligatorio
Expand Down
39 changes: 36 additions & 3 deletions exercises/exercise5.py
Original file line number Diff line number Diff line change
Expand Up @@ -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."""
class Contribuyente(ABC):

@abstractmethod
def calcular_sueldo(self):
pass

# """Dada una lista de contribuyentes, devuelve una lista de los sueldos de
# cada uno."""
@dataclass
class Monotributista(Contribuyente):

sueldo: float

def calcular_sueldo(self) -> float:
if self.sueldo < 30833:
return self.sueldo - 2646.22
elif self.sueldo < 45833:
return self.sueldo - 2958.95
elif self.sueldo < 64166:
return self.sueldo - 3382.62
elif self.sueldo > 64166:
return self.sueldo - 3988.85

@dataclass
class Empleado(Contribuyente):

sueldo: float

def calcular_sueldo(self) -> float:
return self.sueldo - self.sueldo * 0.17


def calcular_sueldos(contribuyentes: List[Contribuyente]) -> List:
listaSueldos=[]
for elemento in contribuyentes:
listaSueldos.append(elemento.calcular_sueldo())
return listaSueldos

# NO MODIFICAR - INICIO
assert type(Contribuyente) == abc.ABCMeta, "Contribuyente debe ser abstracta"
Expand Down
40 changes: 40 additions & 0 deletions exercises/tempCodeRunnerFile.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import abc
from abc import ABC, abstractmethod
from dataclasses import dataclass
from typing import List

@dataclass
class Contribuyente(ABC):

sueldo: float
contribuyentes: List=None

def calcular_sueldos(contribuyentes: List=[]):
return contribuyentes.calcular_sueldo()

# """Dada una lista de contribuyentes, devuelve una lista de los sueldos de
# cada uno."""
@dataclass
class Monotributista(Contribuyente):

def calcular_sueldo(self) -> float:
if self.sueldo < 30833:
return self.sueldo - 2646.22
elif self.sueldo < 45833:
return self.sueldo - 2958.95
elif self.sueldo < 64166:
return self.sueldo - 3382.62
elif self.sueldo > 64166:
return self.sueldo - 3988.85

@dataclass
class Empleado(Contribuyente):

def calcular_sueldo(self) -> float:
return self.sueldo - self.sueldo * 0.17


juan = Monotributista(80000)
maria = Empleado(80_000)
print(maria.calcular_sueldo())
print(juan.calcular_sueldo())