.
Solución al Ejercicio: Hora de cenar en España
📋 Copiar código
def es_hora_de_cenar(hora_24):
"""
Toma una hora en formato de 24 horas y dice si es un buen momento para cenar en España
(considerando la hora típica de cena entre las 21:00 y las 23:00).
Args:
hora_24: Una cadena de texto representando la hora en formato "HH:MM".
Returns:
Un mensaje (cadena de texto) indicando si se considera hora de cenar o no.
Maneja errores básicos de formato de hora.
"""
try:
partes = hora_24.split(':')
hora = int(partes[0])
minuto = int(partes[1])
if 0 <= hora <= 23 and 0 <= minuto <= 59:
if 21 <= hora <= 22 or (hora == 23 and minuto == 0):
return f"A las {hora_24} en España, ¡sí, es un buen momento para cenar!"
elif hora < 21:
return f"A las {hora_24} aún es un poco pronto para cenar en España, la gente suele cenar más tarde."
else: # hora > 23 o (hora == 23 y minuto > 0)
return f"A las {hora_24} ya es un poco tarde para cenar en España, ¡pero nunca es tarde para disfrutar!"
else:
return f"Formato de hora inválido: {hora_24}"
except (ValueError, IndexError):
return f"Formato de hora inválido: {hora_24}"
# Ejemplo de uso
hora1 = "21:30"
mensaje1 = es_hora_de_cenar(hora1)
print(mensaje1)
hora2 = "19:00"
mensaje2 = es_hora_de_cenar(hora2)
print(mensaje2)
hora3 = "23:00"
mensaje3 = es_hora_de_cenar(hora3)
print(mensaje3)
hora_invalida = "25:00"
mensaje_invalido = es_hora_de_cenar(hora_invalida)
print(mensaje_invalido)
otra_hora = "22:15"
otro_mensaje = es_hora_de_cenar(otra_hora)
print(otro_mensaje)
Explicación del Código:
-
def es_hora_de_cenar(hora_24):
:
- Se define una función llamada
es_hora_de_cenar
que toma una cadena de texto (hora_24
)
representando una hora en formato "HH:MM".
-
"""Docstring..."""
:
- La cadena de documentación explica la
función, su argumento y lo que devuelve.
-
try...except (ValueError,
IndexError):
:
- Se utiliza un bloque
try...except
para manejar posibles errores si el formato de la hora es incorrecto.
-
partes = hora_24.split(':')
:
- Se divide la cadena de hora en horas y
minutos.
-
hora = int(partes[0])
y
minuto = int(partes[1])
:
- Se convierten las partes a enteros.
-
if 0 <= hora <= 23 and 0 <=
minuto <= 59:
:
- Se verifica si la hora y los minutos
están dentro de rangos válidos.
-
Condiciones para determinar si es
hora de cenar:
if 21 <= hora <= 22 or (hora ==
23 and minuto == 0):
: Se considera hora de cenar si la hora está
entre las 21:00 y las 22:59, o si son exactamente las 23:00.
elif hora < 21:
: Si la hora
es anterior a las 21:00, se considera pronto para cenar.
else:
: Si la hora es
posterior a las 23:00 (o 23:01 en adelante), se considera tarde para
cenar.
-
Se devuelven mensajes informativos
basados en la hora proporcionada.
-
Si el formato de la hora es inválido,
se devuelve un mensaje de error.
-
Ejemplo de uso:
- Se definen varias horas en formato de 24
horas y se llama a la función
es_hora_de_cenar
con cada una
para ver el mensaje resultante.