Desarrollar una función en Python que calcule el cambio exacto tras una compra. El programa debe recibir el importe total y la cantidad entregada por el cliente. Como resultado, debe mostrar el saldo a devolver desglosado en el menor número posible de billetes y monedas de curso legal (Euro), optimizando la entrega del efectivo. Para la resolución del problema debes utilizar una lista.
def calcular_cambio(total, entregado):
dinero = [500, 200, 100, 50, 20, 10, 5, 2, 1,
0.50, 0.20, 0.10, 0.05, 0.02, 0.01]
if entregado < total:
print("Error: el dinero entregado no es suficiente.")
return []
cambio = int(round((entregado - total) * 100))
cambio_a_devolver = []
for d in dinero:
d_cent = int(round(d * 100))
cantidad = cambio // d_cent
if cantidad > 0:
cambio_a_devolver.append((d, cantidad))
cambio -= d_cent * cantidad
if cambio == 0:
break
return cambio_a_devolver
total = float(input("Ingresa el precio total de la compra: "))
entregado = float(input("Ingresa el dinero entregada: "))
cambio = calcular_cambio(total, entregado)
if len(cambio) == 0:
pass
else:
print("\nCambio a devolver:")
for valor, cantidad in cambio:
if valor >= 5:
print(f"{cantidad} billete(s) de {valor}€")
else:
print(f"{cantidad} moneda(s) de {valor}€")
#Francisco José Plaza García
https://drive.google.com/file/d/1pcJ9MKJXLQ8vqqrzuXjTPs8g31AJ1x2y/view?usp=sharing
El programa empieza pidiéndole al usuario el precio total y el dinero que entrega el cliente.
Si el cliente paga menos de lo que cuesta, sale un error, pero si paga suficiente, el programa calcula el cambio. Luego divide el cambio en billetes y monedas, empezando por los billetes de 500, 200, 100…
Finalmente muestra cuantos billetes y monedas tiene que devolver