Python Quiz 12 – Conversor de horas y minutos en Python

PyQuiz 12 - Conversor de horas y minutos en Python

Pregunta principal del PyQuiz:

>>> num = 928
>>> hours = num // 60
>>> minutes = num % 60
>>> print(f'{hours} hours {minutes} min')
15 hours 28 min
- ?? -
A = '15 hours 28 min'
B = RuntimeError
C = '15.4 hours 28.0 min'

Concepto y explicación

En esta pregunta se pretende hacer incapié en entender la manipulación de divisiones ordinarias, divisiones enteras y la operación módulo.

Como finalidad se pretende desgranar la cantidad de horas y de minutos que hay en un número arbitrario de minutos.

Obtener horas y minutos con Python

Para poder obtener el número de horas completas que representa un número de minutos es necesario dividir el número entre 60, pero al realizar una división ordinaria quedaría un resto representado por la parte decimal del número.

Este tipo de cálculo es necesario realizarlo dado que el sistema que se utiliza para las horas es sexadecimal (de 60 unidades) en vez del decimal (de 10 unidades).

>>> 120 / 60
2.0  # 2 horas
>>> 928 / 60
15.466666666666667  # 15 horas y "pico"

Tras dividir un número entre 60, se obtiene un número en coma flotante donde el número entero representa las horas y la parte decimal representa el extra de una hora en minutos.

Para calcular el número total de minutos extra que tiene la cantidad total es necesario multiplicar la parte decimal por 60 y redondear al alza:

>>> num = (928 / 60)
>>> num - int(num)
0.4666666666666668
>>> (num - int(num)) * 60
28.000000000000007  # minutos extra de las 15 horas

Como se ve en el ejemplo, se puede calcular todo por partes pero para este tipo de cálculos se utiliza la división entera y la operación de módulo.

La división entera permite obtener el número entero que devuelve la división (el número 15) y la operación de módulo devuelve el número de minutos extra al dividir entre 60.

Por lo tanto se puede obtener este cálculo fácilmente:

>>> 928 // 60
15  # horas
>>> 928 % 60
28  # minutos extra

Se podría definir una función para realizar el cálculo fácilmente como sigue:

>>> def hours_minutes(minutes):
...     hours = minutes // 60
...     min_extra = minutes % 60
...     return hours, min_extra
...
>>> hours_minutes(928)
(15, 28)
>>> hours_minutes(900)
(15, 0)
>>> hours_minutes(432)
(7, 12)

Solución

Por tanto la solución correcta es la A:

A) ’15 hours 28 min’


Practica Python con PyQuizzes

En la sección de PyQuizzes puedes encontrar ejercicios prácticos explicados pormenorizado para mejorar tus habilidades como pythonista. ¡No te los pierdas!


Tutorial Python online

Aprender Python de forma gratuita siguiendo las secciones del tutorial de Python.


Libros recomendados para aprender Python

Estos son los libros que pueden ayudarte a aprender Python, aprender a programar, tipos de datos, algoritmia y mucho más.

Libro Python a fondo Disponible en:

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Oscar Ramirez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento: No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a ionos (1&1) que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Publicar un comentario

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para fines de afiliación y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Ver Política de cookies
Privacidad