3 usuarios conectados

Hora de cenar en España en Python

Comparte esto

 
Escribe un código Python que tome una hora en formato de 24 horas (por ejemplo, "20:00") y te diga si, según esa hora, es un buen momento para cenar en España (considerando que la hora típica para cenar es entre las 21:00 y las 23:00).

.


Más ejercicios




Mostrar/Ocultar ejercicio resuelto


  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:

  1. 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".
  2. """Docstring...""":

    • La cadena de documentación explica la función, su argumento y lo que devuelve.
  3. try...except (ValueError, IndexError)::

    • Se utiliza un bloque try...except para manejar posibles errores si el formato de la hora es incorrecto.
  4. partes = hora_24.split(':'):

    • Se divide la cadena de hora en horas y minutos.
  5. hora = int(partes[0]) y minuto = int(partes[1]):

    • Se convierten las partes a enteros.
  6. if 0 <= hora <= 23 and 0 <= minuto <= 59::

    • Se verifica si la hora y los minutos están dentro de rangos válidos.
  7. 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.
  8. Se devuelven mensajes informativos basados en la hora proporcionada.

  9. Si el formato de la hora es inválido, se devuelve un mensaje de error.

  10. 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.