Función para dividir un número entero en grupos de 5, 2 y 1 en Python

El siguiente código define una función en Python que tiene como entrada un número entero y lo divide en “grupos” de 5 unidades, de 2 unidades y de 1 unidad.  El caso práctico sería, por ejemplo, dividir una cantidad X en sellos de 5p, 2p y 1p, usando el menor número de sellos posible. Para ello he definido la función stamps que recibe un entero y devuelve la tripleta de números. En el código hay que utilizar los comandos para el cociente y el resto de una división en Python:

def stamps(a):

    if (a % 5) != 0: # Si a no es divisible entre 5 me quedo con su parte entera.
        p = a // 5
    else:
        return ((a//5),0,0) # Si es divisible entre 5 no necesito otros sellos.

    n = a - (p*5) # Ahora defino la variable n que es lo que me resta.

    if (n % 2) != 0: # Si lo que me queda no es divisible entre 2 cojo su parte entera.
        s = n // 2
    else:
        return (p,(n//2),0) # Me quedo con p sellos de 5p y n/2 sellos de 2p.

    return p,s,(a-(5*p)-(2*s)) # Si llego aquí, el primero es p, el segundo s, y el tercero lo que me resta.

Algunos resultados de éste código serían los siguientes:

Para la cantidad de 8, harían falta 1 sello de 5p, otro de 2p y uno de 1p. Sin embargo, para la cantidad de 55, al ser múltiplo de 5, sólo sería necesario usar 11 sellos de 5p.

Para saber más:
Números y operaciones aritméticas elementales en Python.

Deja una respuesta