elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [python] Calcular billetes
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [python] Calcular billetes  (Leído 30,403 veces)
Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
[python] Calcular billetes
« en: 3 Octubre 2010, 23:45 pm »

Hay un programa que se me resiste.

un programa que calcule el desglose en billetes y monedas de una cantidad exacta de euros. Hay billetes de 500, 200, 100, 50, 20, 10 y 5 euros y monedas de 2 y 1 euros. Por ejemplo, si deseamos conocer el desglose de 434 euros, el programa mostrará por pantalla el siguiente resultado:
2 billetes de 200 euros.
1 billete de 20 euros.
1 billete de 10 euros.
2 monedas de 2 euros.


He guardado todos los billetes y moneda en cada variable. He intentado y sigo con ello usando los if-else con sus operadores ==, !=, <=, and, or, etc, etc, etc.

Este tipo de ejercicio es mucho para mi. Aún así sigo para aprender aunque sea un tocho de código que haga y ustedes muy pequeño. Sigo experimentando pero necesito ideas.

Código
  1. # Introducir datos a la variable.
  2. E = int(raw_input('Ingresar Capital: '))
  3.  
  4. # Variables Billetes.
  5. a = 500
  6. b = 200
  7. c = 100
  8. d = 50
  9. e = 20
  10. f = 10
  11. g = 5
  12.  
  13. # Variables Monedas.
  14. h = 2
  15. i = 1
  16.  
  17. #R = (a / 500 != 0) or (b / 200 != 0) or (c / 100 != 0) or (d / 50 != 0) or (e / 20 != 0) or (f / 10 != 0) or (g / 5 != 0) or (h / 2 != 0) or (i / 1 != 0)
  18.  
  19. #print R
  20.  
  21. if (E / a) == 0:
  22.    a1 = E
  23.    print a1
  24. if (a1 / b) == 0:
  25.    a2 = a1
  26.    print a2
  27.  
  28.    etc.
  29.  
  30.  
  31. print '%d billetes de 500 €uros.' % a1
  32. print '%d billetes de 200 €uros.' % a2
  33. print '%d billetes de 100 €uros.' % a3
  34. print '%d billetes de 50 €uros.' % a4
  35. print '%d billetes de 20 €uros.' % a5
  36. print '%d billetes de 10 €uros.' % a6
  37. print '%d billetes de 5 €uros.' % a7
  38. print '%d monedas de 2 €uros.' % a8
  39. print '%d monedas de 1 €uros.' % a9
  40.  
  41.  


« Última modificación: 15 Octubre 2010, 09:14 am por Meta » En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [python] Calcular billetes
« Respuesta #1 en: 4 Octubre 2010, 03:47 am »

Bueno, podría darte la solución pero creo que no es la idea no? ;D
Para empezar no uses tantas variables, utiliza una tupla o una lista.
Una vez tengas la lista, en pseudocodigo sería algo así.
Citar
Se ingresa valor
Se toma primer item de la lista
Se divide valor por item
Si resultado >= 1, guardas parte entera del resultado por un lado, y sustituyes valor original por el resto
Pasas al siguiente item

Basicamente lo mismo que dice la letra :P

Saludos



En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [python] Calcular billetes
« Respuesta #2 en: 4 Octubre 2010, 06:40 am »

Una cosa más aparte de lo añadido por mi compañero.

Los nombres de las variables deben hacer alusión a su propósito. Tratar de omitir por ejemplo "a, b, c, d, e", resulta mejor:

moneda_1, moneda_2, etc.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: [python] Calcular billetes
« Respuesta #3 en: 4 Octubre 2010, 14:02 pm »

Hola:

Lo he hecho así fijándome en el for con array. En este caso no es la idea aunque por fin funcione.

Código
  1. # Introducir datos a la variable.
  2. N = int(raw_input('Ingresar Capital: '))
  3.  
  4. # Variables Billetes.
  5. denominaciones = [500, 200, 100, 50, 20, 10, 5, 2, 1]
  6.  
  7. for denominacion in denominaciones:
  8.    print "%d Billetes de %d" % ((N / denominacion), denominacion)
  9.    N = N % denominacion
  10.  

La idea es usar sólo IF- ELSE y nada de array como hice arriba ni tampoco usar While. ¿A qué ahora ya no es tan fácil?
El código será más largo y pesado, pero hay que aprender hacer las cosas complejas también.

Saludo.
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [python] Calcular billetes
« Respuesta #4 en: 4 Octubre 2010, 14:07 pm »

Bue, yo tengo el mio :P
Código
  1. capital= int(input('Ingrese capital: '))
  2. dinero = (500,200,100,50,20,10,5,2,1)
  3. for i in dinero:
  4.    tipo, plural = ' billete', ''
  5.    temp = capital/i
  6.    if temp >= 1:
  7.        if i < 5: tipo = ' moneda'
  8.        if int(temp) > 1: plural = 's'
  9.        #-- Solo a efectos esteticos --
  10.  
  11.        print(str(int(temp))+' '+tipo+plural+' de '+str(i)+' euros')
  12.        capital %= i

La idea es hacerlo solo con IF? Es que me resulta muy pesado :P
Y por cierto, no soy quien para juzgar a nadie, pero diciendo que ese código lo has hecho tu no haces más que engañarte a ti mismo ;)

Saludos
« Última modificación: 4 Octubre 2010, 14:19 pm por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: [python] Calcular billetes
« Respuesta #5 en: 4 Octubre 2010, 14:28 pm »

No no lo he hecho yo.  Será que no aprendo ni a de tres. No es que estés juzgando, sólo opinando y tienes razón.
« Última modificación: 4 Octubre 2010, 14:38 pm por Meta » En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [python] Calcular billetes
« Respuesta #6 en: 4 Octubre 2010, 14:50 pm »

Ya he visto el libro que estas leyendo, página 89 de 399 :P (del pdf) ... igual no creo que el problema sea con la dificultad, sino que es un poco de lógica :-\
Volviendo a tu problema original y el tema de los IF ... podrías hacer algo así ...
Código
  1. # Introducir datos a la variable.
  2. E = int(raw_input('Ingresar Capital: '))
  3.  
  4. # Variables Billetes.
  5. a = 500
  6. b = 200
  7. c = 100
  8. d = 50
  9. e = 20
  10. f = 10
  11. g = 5
  12.  
  13. if E/a >= 1:
  14. print "%d Billetes de 500" % (E / a)
  15. E = E % a
  16. if E/b >= 1:
  17. print "%d Billetes de 200" % (E / b)
  18. E = E % b
  19. #...

El >=1 es para que no salga "0 Billetes de x"

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein
Canariolp21

Desconectado Desconectado

Mensajes: 12



Ver Perfil
Re: [python] Calcular billetes
« Respuesta #7 en: 5 Noviembre 2010, 04:27 am »

Buenas Noches compañeros:

Este es mi primer Post y espero que no sea el último, jejejeje.

Bueno este ejercicio lo he realizado de la siguiente manera para que le echen un vistazo.

Ya me contaran que tal les parece:

Código
  1. # -*- coding: ISO-8859-1 -*-
  2. #         Codificacion de caracteres. Al tener el programa caracteres no ASCII
  3. #         hace falta indicarle el tipo de codificacion empleado.
  4. #Programa:   Ejercicio_01.py
  5. #Proposito.- Programa que lee Numero Entero y lo descompone en los diferentes
  6. #            Billetes y Monedas de Euros.
  7. #Autor:      Luis Alberto Rouco Ramirez
  8. #Fecha:      03 de Noviembre de 2010
  9.  
  10. # Importar librerias del sistema
  11. import os
  12.  
  13. # Declarar variables e inicializarlas
  14. sistema = (os.name)
  15. contador=0
  16.  
  17. while True:
  18.  
  19.    try:
  20.  
  21.        if sistema=="nt":
  22.            os.system("cls")
  23.        else:
  24.            os.system("clear")
  25.  
  26.        #Introduccion del Billete a descomprimir
  27.        billetes=int(raw_input('Escribe una cantidad de Euros a descomponer: '))
  28.  
  29.        for des in [500,200,100,50,20,10,5,2,1]:
  30.            division=billetes/des
  31.            billetes=billetes%des
  32.            if division!=0:
  33.                if des>=5:
  34.                    if division>1:
  35.                        print '%d Billetes de' %division + '',des, 'Euros'
  36.                    else:
  37.                        print '%d Billete de' %division + '',des, 'Euros'
  38.                else:
  39.                    if division>1:
  40.                        print '%d Monedas de' %division + '',des, 'Euros'
  41.                    else:
  42.                        if des>1:
  43.                            print '%d Moneda de' %division + '',des, 'Euros'
  44.                        else:
  45.                            print '%d Moneda de' %division + '',des, 'Euro'
  46.        raw_input()
  47.        quit()
  48.  
  49.    except ValueError:
  50.        for i in [1]:
  51.            contador=contador+i
  52.            #print 'Contador vale', contador
  53.            if contador <3:
  54.                print 'Debe introducir un numero entero.'
  55.            else:
  56.                print 'Eres bobo, que pasa que no viste Barrio Sesamo de pequenio...'
  57.                raw_input()
  58.                quit()
  59.            break

Un saludo y hasta otra.
« Última modificación: 5 Noviembre 2010, 10:59 am por Novlucker » En línea

Meta


Desconectado Desconectado

Mensajes: 3.438



Ver Perfil WWW
Re: [python] Calcular billetes
« Respuesta #8 en: 5 Noviembre 2010, 13:16 pm »

Hola:

Buen trabajo, está muy currado al detalle. Estás hecho un profesional. En mi caso estoy aprendiendo con un PDF de Python y de este mismo foro que me guían muy bien. Estoy haciendo recolector de códigos de Python gracias itra vez a este mismo foro. Toca aprender.

Un abrazo.
En línea

Canariolp21

Desconectado Desconectado

Mensajes: 12



Ver Perfil
Re: [python] Calcular billetes
« Respuesta #9 en: 6 Noviembre 2010, 01:23 am »

Wenas Meta:

Yo también estoy usando ese mismo PDF para aprender, es más ahora mismo voy por el tema del for in, y estoy haciendo esos ejercicios.

De momento me quedan 3 ejercicios por hacer que son los 2 del Maximo común divisor y el de el numero mas grande después de pulsar un número negativo.

Ya te contaré como voy, jejeje.

Si necesitas ayuda en python, yo todas las semanas aprendo algo nuevo así que si puedo ayudarte avisas compi.

Un Saludo.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Calcular entropía multiescala [Python]
Scripting
Yeison.Eng 2 7,040 Último mensaje 17 Noviembre 2010, 00:22 am
por Gabriela
Un fallo informático causa que Air China ofrezca billetes de avión 'gratis'
Noticias
wolfbcn 0 1,380 Último mensaje 16 Julio 2012, 15:16 pm
por wolfbcn
Cambio en billetes y monedas en C++
Programación C/C++
AxelP 7 14,343 Último mensaje 2 Octubre 2014, 15:44 pm
por rir3760
[Python] - calcular el max y el min de una matriz de 4x4
Scripting
jhonnymn3 1 5,469 Último mensaje 18 Noviembre 2014, 15:18 pm
por daryo
Tutorial de desglose o registro de billetes
Java
jelsir 2 2,432 Último mensaje 28 Septiembre 2015, 19:28 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines