miércoles, 22 de abril de 2020

Ejemplo de manejo de módulo para horas y minutos


Enunciado del problema

Preparar un código simple para evaluar o encontrar el tiempo final de un periodo de tiempo dado, expresándolo en horas y minutos. Las horas van de 0 a 23 y los minutes de 0 a 59. El resultado debe ser mostrado en la consola.
Por ejemplo, si el evento comienza a las 12:17 y dura 59 minutos, terminará a las 13:16.
Pista: utilizar el operador % puede ser clave para resolver el ejercicio

Para resolver este problema debemos solicitar dos valores, la hora de inicio del evento y la duración para lo cuál usaremos el siguiente código:




startEvent = input("Ingrese hora de inicio del evento (hh:mm): \n")
durationEvent = input("Ingrese la duración del evento (hh:mm): \n")

Una vez que tenemos nuestros valores procedemos a realizar las siguientes acciones
  • Recuperamos las horas y los minutos de la hora de inicio, haciendo un split del string ingresado y convirtiendo los valores en números
  • Recuperamos las horas y los minutos de la duración del eventosiguiendo la misma lógica anterior




startHour, startMinute = [int(value) for value in startEvent.split(":")]
durationHour, durationMinute = [int(value) for value in durationEvent.split(":")]

Ahora con estos valores vamos a calcular la hora de finalización del evento para lo cual realizamos los siguientes pasos:
  • Calculamos el total de minutos sumando los minutos del inicio del evento, más los minutos de la duración
  • Validamos si la cantidad de minutos es mayor o igual que 60
    • Si es mayor que 60 calculamos el total de horas sumando las horas de inicio del evento más las horas de la duración más 1 y calculamos la cantidad de minutos obteniendo el módulo en base 60 del total de minutos
    • Si es menor que 60 calculamos el total de horas sumando las horas de inicio del evento más las horas de la duración
Entonces el código sería el siguiente:




endMinutes = durationMinute + startMinute
if endMinutes>=60:
   endHour = startHour + durationHour + 1    endMinutes = (endMinutes % 60)
else:
   endHour = startHour + durationHour

De esta manera ya tendremos calculada la hora de finalización del evento y la podemos imprimir como se muestra:




print(f"La hora de fin es: {endHour}:{endMinutes}")

El ejemplo de la ejecución en la consola se vería así:

No hay comentarios.:

Publicar un comentario