LABORATORIO: Días de la semana
Tiempo Estimado
30 - 60 minutos
Nivel de Dificultad
Fácil/Medio
Objetivos
- Mejorar las habilidades del estudiante para definir clases desde cero.
- Definir y usar variables de instancia.
- Definir y usar métodos.
Escenario
Tu tarea es implementar una clase llamada Weeker que almacena y manipula los días de la semana.
El constructor de la clase acepta un argumento: una cadena. La cadena representa el nombre del día de la semana y los únicos valores aceptables deben provenir del siguiente conjunto:
Lun Mar Mie Jue Vie Sab Dom
Invocar al constructor con un argumento desde fuera de este conjunto debería generar la excepción WeekDayError (defínela tu mismo). La clase debe proporcionar las siguientes funcionalidades:
- Los objetos de la clase deben ser “imprimibles”, es decir, deben poder convertirse implícitamente en cadenas de la misma forma que los argumentos del constructor.
- La clase debe estar equipada con métodos de un parámetro llamados
add_days(n)ysubtract_days(n), siendonun número entero que actualiza el día de la semana almacenado dentro del objeto mediante el número de días indicado, hacia adelante o hacia atrás. - Todas las propiedades del objeto deben ser privadas.
Puedes usar la siguiente plantilla:
class WeekDayError(Exception):
pass
class Weeker:
#
# Escribir código aquí.
#
def __init__(self, day):
#
# Escribir código aquí.
#
def __str__(self):
#
# Escribir código aquí.
#
def add_days(self, n):
#
# Escribir código aquí.
#
def subtract_days(self, n):
#
# Escribir código aquí.
#
try:
weekday = Weeker('Lun')
print(weekday)
weekday.add_days(15)
print(weekday)
weekday.subtract_days(23)
print(weekday)
weekday = Weeker('Lun')
except WeekDayError:
print("Lo siento, no puedo atender tu solicitud.")
Salida Esperada
Lun
Mar
Dom
Lo siento, no puedo atender tu solicitud.