Autor
|
Tema: [python] Calcular billetes (Leído 31,263 veces)
|
Meta
|
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. # Introducir datos a la variable. E = int(raw_input('Ingresar Capital: ')) # Variables Billetes. a = 500 b = 200 c = 100 d = 50 e = 20 f = 10 g = 5 # Variables Monedas. h = 2 i = 1 #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) #print R if (E / a) == 0: a1 = E print a1 if (a1 / b) == 0: a2 = a1 print a2 etc. print '%d billetes de 500 €uros.' % a1 print '%d billetes de 200 €uros.' % a2 print '%d billetes de 100 €uros.' % a3 print '%d billetes de 50 €uros.' % a4 print '%d billetes de 20 €uros.' % a5 print '%d billetes de 10 €uros.' % a6 print '%d billetes de 5 €uros.' % a7 print '%d monedas de 2 €uros.' % a8 print '%d monedas de 1 €uros.' % a9
|
|
« Última modificación: 15 Octubre 2010, 09:14 am por Meta »
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Bueno, podría darte la solución pero creo que no es la idea no? Para empezar no uses tantas variables, utiliza una tupla o una lista. Una vez tengas la lista, en pseudocodigo sería algo así. 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 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
Mensajes: 3.069
/^$/
|
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
|
|
|
|
Meta
|
Hola: Lo he hecho así fijándome en el for con array. En este caso no es la idea aunque por fin funcione. # Introducir datos a la variable. N = int(raw_input('Ingresar Capital: ')) # Variables Billetes. denominaciones = [500, 200, 100, 50, 20, 10, 5, 2, 1] for denominacion in denominaciones: print "%d Billetes de %d" % ((N / denominacion), denominacion) N = N % denominacion
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
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Bue, yo tengo el mio capital= int(input('Ingrese capital: ')) dinero = (500,200,100,50,20,10,5,2,1) for i in dinero: tipo, plural = ' billete', '' temp = capital/i if temp >= 1: if i < 5: tipo = ' moneda' if int(temp) > 1: plural = 's' #-- Solo a efectos esteticos -- print(str(int(temp))+' '+tipo+plural+' de '+str(i)+' euros') capital %= i
La idea es hacerlo solo con IF? Es que me resulta muy pesado 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
|
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
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Ya he visto el libro que estas leyendo, página 89 de 399 (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í ... # Introducir datos a la variable. E = int(raw_input('Ingresar Capital: ')) # Variables Billetes. a = 500 b = 200 c = 100 d = 50 e = 20 f = 10 g = 5 if E/a >= 1: print "%d Billetes de 500" % (E / a) E = E % a if E/b >= 1: print "%d Billetes de 200" % (E / b) E = E % b #...
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
Mensajes: 12
|
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: # -*- coding: ISO-8859-1 -*- # Codificacion de caracteres. Al tener el programa caracteres no ASCII # hace falta indicarle el tipo de codificacion empleado. #Programa: Ejercicio_01.py #Proposito.- Programa que lee Numero Entero y lo descompone en los diferentes # Billetes y Monedas de Euros. #Autor: Luis Alberto Rouco Ramirez #Fecha: 03 de Noviembre de 2010 # Importar librerias del sistema import os # Declarar variables e inicializarlas sistema = (os.name) contador=0 while True: try: if sistema=="nt": os.system("cls") else: os.system("clear") #Introduccion del Billete a descomprimir billetes=int(raw_input('Escribe una cantidad de Euros a descomponer: ')) for des in [500,200,100,50,20,10,5,2,1]: division=billetes/des billetes=billetes%des if division!=0: if des>=5: if division>1: print '%d Billetes de' %division + '',des, 'Euros' else: print '%d Billete de' %division + '',des, 'Euros' else: if division>1: print '%d Monedas de' %division + '',des, 'Euros' else: if des>1: print '%d Moneda de' %division + '',des, 'Euros' else: print '%d Moneda de' %division + '',des, 'Euro' raw_input() quit() except ValueError: for i in [1]: contador=contador+i #print 'Contador vale', contador if contador <3: print 'Debe introducir un numero entero.' else: print 'Eres bobo, que pasa que no viste Barrio Sesamo de pequenio...' raw_input() quit() break
Un saludo y hasta otra.
|
|
« Última modificación: 5 Noviembre 2010, 10:59 am por Novlucker »
|
En línea
|
|
|
|
Meta
|
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
Mensajes: 12
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Calcular entropía multiescala [Python]
Scripting
|
Yeison.Eng
|
2
|
7,258
|
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,518
|
16 Julio 2012, 15:16 pm
por wolfbcn
|
|
|
Cambio en billetes y monedas en C++
Programación C/C++
|
AxelP
|
7
|
14,827
|
2 Octubre 2014, 15:44 pm
por rir3760
|
|
|
[Python] - calcular el max y el min de una matriz de 4x4
Scripting
|
jhonnymn3
|
1
|
5,716
|
18 Noviembre 2014, 15:18 pm
por daryo
|
|
|
Tutorial de desglose o registro de billetes
Java
|
jelsir
|
2
|
2,668
|
28 Septiembre 2015, 19:28 pm
por engel lex
|
|