Python - Ayuda, ejercicio contar el capital a traves de billetes y monedas.

 
Vista:

Ayuda, ejercicio contar el capital a traves de billetes y monedas.

Publicado por Someone (2 intervenciones) el 24/10/2018 18:57:41
Buenas tardes, soy nuevo en este mundo de la programación, el enunciado del ejercicio es "Realiza un programa que calcule el desglose mínimo en billetes y monedas de una cantidad exacta de euros. Hay billetes de 500, 200, 100, 50, 20, 10 y 5€ y monedas de 2 y 1€."

Y lo que he hecho ha sido una seria sucesiva de condicionales if , el problema es que al realizar ejemplos como el 401 no muestra nada, pero si modifico la ultima condicion eliminando el = me muestra los resultados pero la moneda de 1 euro no me lo cuenta.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
print("Introduzca una cantidad de dinero exacta de euros")
Precio=float(input())
BilleteA=0
BilleteB=0
BilleteC=0
BilleteD=0
BilleteE=0
BilleteF=0
BilleteG=0
MonedaA=0
MonedaB=0
if Precio/500>1:
    BilleteA= Precio/500
    Precio= Precio%500
if Precio/200>1:
    BilleteB= Precio/200
    Precio= Precio%200
if Precio/100>1:
    BilleteC= Precio/100
    Precio= Precio%100
if Precio/50>1:
    BilleteD= Precio/50
    Precio= Precio%50
if Precio/20>1:
    BilleteE= Precio/20
    Precio= Precio%20
if Precio/10>1:
    BilleteF= Precio/10
    Precio= Precio%10
if Precio/5>1:
    BilleteG= Precio/5
    Precio= Precio%5
if Precio/2>1:
    MonedaA= Precio/2
    Precio= Precio%2
if Precio/1>=1:
    MonedaB= Precio/1
    Precio=Precio%1
else:
    print("500 {0}, 200 {1}, 100 {2}, 50 {3}, 20 {4}, 10 {5} ,5 {6}, 2 {7} ,1 {8}".format(BilleteA, BilleteB, BilleteC, BilleteD, BilleteE, BilleteF, BilleteG, MonedaA, MonedaB))

Ya he encontrado el problema!! Era el útlimo condicional, que he eliminado Precio= Precio%1 y lo he sustituido por el print con las soluciones. He encontrado otro error donde si escribo 1020 me duvuelve los billetes de 500 2,04, y me gustaria que fuesen numeros enteros sin decimales, eso como se realiza? Con float()?

Gracias igualmente ^^
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda, ejercicio contar el capital a traves de billetes y monedas.

Publicado por tincopasan (1082 intervenciones) el 24/10/2018 23:09:13
float devuelve decimales, el tema está en la división, utiliza " // " esa operación devolverá la parte entera.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
Imágen de perfil de Antoni Masana
Val: 121
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Ayuda, ejercicio contar el capital a traves de billetes y monedas.

Publicado por Antoni Masana (67 intervenciones) el 25/10/2018 13:31:29
Ya funciona y he mejorado la presentación.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
print("\nIntroduzca una cantidad de dinero exacta de euros: ", end="")
Precio=float(input())
Billete_500=0
Billete_200=0
Billete_100=0
Billete_050=0
Billete_020=0
Billete_010=0
Billete_005=0
Moneda_002=0
Moneda_001=0
 
if Precio >= 500:
    Billete_500= Precio//500
    Precio= Precio - (Billete_500 * 500)
 
if Precio >= 200:
    Billete_200= Precio//200
    Precio= Precio - (Billete_200 * 200)
 
if Precio >= 100:
    Billete_100= Precio//100
    Precio= Precio - (Billete_100 * 100)
 
if Precio >= 50:
    Billete_050= Precio//50
    Precio= Precio - (Billete_050 * 50)
 
if Precio >= 20:
    Billete_020= Precio//20
    Precio= Precio - (Billete_020 * 20)
 
if Precio >= 10:
    Billete_010= Precio//10
    Precio= Precio - (Billete_010 * 10)
 
if Precio >= 5:
    Billete_005= Precio//5
    Precio= Precio - (Billete_005 * 5)
 
if Precio >= 2:
    Moneda_002= Precio//2
 
if Precio > 0:
    Moneda_001= Precio - (Moneda_002 * 2)
 
 
print("\n")
print("Billetes de 500 = {0}".format(Billete_500))
print("Billetes de 200 = {0}".format(Billete_200))
print("Billetes de 100 = {0}".format(Billete_100))
print("Billetes de  50 = {0}".format(Billete_050))
print("Billetes de  20 = {0}".format(Billete_020))
print("Billetes de  10 = {0}".format(Billete_010))
print("Billetes de   5 = {0}".format(Billete_005))
print("Monedas  de   2 = {0}".format(Moneda_002 ))
print("Monedas  de   1 = {0}".format(Moneda_001 ))

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 106
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Ayuda, ejercicio contar el capital a traves de billetes y monedas.

Publicado por Jonay Zevenzui (14 intervenciones) el 25/10/2018 13:47:44
Hace un tiempo escribí un pequeño script para el desgloce de cantidades, te lo pego por si quieres ver otra forma de hacer lo mismo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def desgloce(cantidad):
    valores = (500, 200, 100, 50, 20, 10, 5, 2, 1, 0.5)
    for n in(valores):
        resultado = cantidad / n
        cantidad = cantidad - (resultado * n)
        if n >= 5:
            if resultado <= 1:
                typ = 'Billete'
            else:
                typ = typ + 's'
        else:
            if resultado <= 1:
                typ = 'Moneda'
            else:
                typ = typ + 's'
        print '%s %s de %s' % (str(resultado),typ, n)
desgloce(538)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar