La función divmod en Python hace una división, la misma que podríamos hacer con el operador de división; pero esta devuelve dos valores: el cociente y el residuo.
Aunque parece simple, la función ahorra líneas de código, veamos las razones a continuación.
Nota: recuerda instalar Python en Windows, Android o probar el editor online.
Sintaxis y forma de uso de divmod
Como lo dije, esta función devuelve una tupla y recibe dos argumentos: el número que vamos a dividir y el número sobre el que vamos a dividir. O sea si hacemos esto:
sueldo_diario = 8000 / 5
Se remplazaría por esto:
sueldo_diario = divmod(8000, 5)
La ventaja de divmod es cuando queremos obtener también el residuo y el cociente de forma entera en una misma llamada, veremos abajo los ejemplos.
Ejemplo de uso de divmod
Veamos un claro ejemplo en donde se convierten segundos a minutos, y se saca el sobrante de los segundos.
No será complejo, vamos a convertir 125 segundos a minutos. Un minuto tiene 60 segundos, ¿verdad? entonces:
segundos = 125
minutos = segundos // 60
segundos_sobrantes = segundos % 60 # Residuo de dividir entre 60
print("Minutos: {}, segundos: {}".format(minutos, segundos_sobrantes))
Primero obtenemos los minutos, y luego hacemos otra operación con %
para obtener el residuo, que es 5. Sin embargo en casos largos ese código va a empeorar.
Un enfoque más limpio es el siguiente:
segundos = 125
minutos, segundos_sobrantes = divmod(segundos, 60)
print("Minutos: {}, segundos: {}".format(minutos, segundos_sobrantes))
Aunque el resultado es el mismo, nos ahorramos algunas líneas y dejamos que la función separe el cociente y el residuo.
Conclusión
Las matemáticas y la programación se ayudan entre sí. Si sabemos muchas funciones matemáticas podremos escribir mejor código.
Un ejemplo de ello es la función divmod en Python que facilita la separación del cociente y el residuo de una división en una sola operación.
Si quieres aprender más sobre Python haz click aquí.
Pingback: Python | Días, horas, minutos y segundos que ha vivido una persona - Parzibyte's blog