Hola buen dia
Hace unos dias empece aprender python, apenas voy en las primeras paginas de un par de libros, recien empiezo con las estructuras de control, en este caso con la sentencia IF. Bien el ejercicio en el que estoy es un scrip que pida un numero (dinero), el codigo tiene que hacer el desgloce de acuerdo al valor de algunos billetes y monedas, en este caso de billetes de 500, 200, 100, 50, 20, 10 y monedas de 5, 2, 1
Se que deben de haber varias formas para hacerlo, yo sin mucha experiencia en programacion se me ocurrio de esta manera:
#Este programa simula es desgloce de caja
#El usuario va a introducir una cantidad de dinero cualquiera, el desgloce se debe hacer
#con billetes de 500 200 100 50 20 10 y modenas de 5 y 2
#b500, b200, b100.... son los billetes y sus denominaciones
#m5, m2, m1... son las variables que representan monedas.
print(" C A J A ")
print(" ")
dinero=int(input("Entre la cantidad total de dinero: ")) #Leer la cantidad total de dinero
if dinero > 0 :
b500=dinero//500 #Se divide el total de dinero entre el billete mas alto
b200=(dinero%500)//200
b100=((dinero-(b500*500)-(b200*200))%200)//100 #apartir de aqui restare los billetes
b50=((dinero-(b500*500)-(b200*200)-(b100*100))%100)//50 #que ya desgloce para que con el
b20=((dinero-(b500*500)-(b200*200)-(b100*100)-(b50*50))%50)//20 #resto siga obteniendo
b10=((dinero-(b500*500)-(b200*200)-(b100*100)-(b50*50)-(b20*20))%20)//10 #valores
m5=((dinero-(b500*500)-(b200*200)-(b100*100)-(b50*50)-(b20*20)-(b10*10))%10)//5
m2=((dinero-(b500*500)-(b200*200)-(b100*100)-(b50*50)-(b20*20)-(b10*10)-(m5*5))%5)//2
m1=((dinero-b500-b200-b100-b50-b20-b10-m5-m2)%2)//1 #Todo lo que sobre seran las unidades
if b500>=1:
print("b500 ",b500)
if b200>=1:
print("b200 ",b200)
if b100>=1:
print("b100 ", b100)
if b50>=1:
print("b50 ", b50)
if b20>=1:
print("b20 ", b20)
if b10>=1:
print("b10 ", b10)
if m5>=1:
print("m5 ", m5)
if m2>=1:
print("m2 ", m2)
if m1>=1:
print("m1 ", m1)
if dinero < 0:
print("El numero tiene que ser positivo")
if dinero == 0:
print("El numero que escribio es CERO")
Me podrian compartir que tan bien o que tan mal esta mi codigo, o alguna otra forma de poder llegar al resultado.
Gracias.
vas bien, pero puedes ser màs eficiente y legible si haces
b500=dinero//500
dinero = dinero - b500
b200=dinero//200
así te ahorras instrucciones matemáticas y haces el código muchisimo más legible
los if sería mejor que fueran
if dinero > 0 :
#codigo si es mayor que cero
elif dinero < 0:
#codigo si es menor que cero
else:
#si no cumple las condiciones anteriores
el //1 es innecesario (todo entre 1 es 1 y aquí solo manejas enteros
hay algunas cositas que podrìas hacer adicional para resumir el código, pero es manejo un poco más avanzado de strings
Gracias por lo de las sentencias
ELIFTengo una duda con esto:
CitarCitar
b500=dinero//500
dinero = dinero - b500
b200=dinero//200
por ejemplo si mi total es 850 donde b500=1 luego en:
dinero=dinero-b500
quedaria:
dinero=850-1
solo se le restaria 1 no los 500 como tal, o lo estoy entendiendo mal??
estás entendiéndolo bien! era para probarte (XD mentira XD me equivoqué yo)
b500=dinero//500
dinero = dinero*500 - b500
b200=dinero//200
Disculpa pero:
Citar
b500=dinero//500
dinero = dinero*500 - b500
b200=dinero//200
con el ejemplo de dinero=850
seria dinero=850*500-1
no tendría por que multiplicar la variable inicial por el valor de 500
XD sorry ando super distraido hoy
lo que tienes que restar del dinero es los billetes de 500 XD así que es la cantidad de billetes de 500 multiplicado por 500 (que es su valor)
ok ok
Gracias, toda ayuda es muy buena. Saludos.
Cuales son los libros que utilizas? estoy interesado en aprender python y hay demasiada informacion que al principio marean un poco jaja