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

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Python] Calculadora
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Python] Calculadora  (Leído 8,445 veces)
lDanny

Desconectado Desconectado

Mensajes: 21


Ver Perfil
[Python] Calculadora
« en: 8 Octubre 2010, 18:04 pm »

Hola, acabo de empezar hace un par de dias y he hecho esta calculadora:
Tiene algunas limitaciones ya que tienes que meter una secuencia de operaciones
ejemplo:
1+2+3+4 , es por eso que solo acepta numeros de 1 digito, y ademas es con parentesis
1+2*(3+4) daria un mal resultado, para que te de bien tendrias q poner 1+(2*(3+4))
Bueno aqui pongo el codigo para que lo vean, Si ven que puese hacerse mejoras o hacer un codigo mas pequeño ps genial, me lo comentan para seguir aprendiendo.

Código
  1.  
  2. def calcula(a):
  3. total=int(a[0])
  4. i=1
  5. while (i<len(a)):
  6. if (a[i]=='+'):
  7. if (a[i+1]=='('):
  8. M=calcula(a[i+2:len(a)-1])
  9. total = total+ M[0]
  10. i+=M[1]
  11. else:
  12. total=total+int(a[i+1])
  13. i=i+1
  14. elif (a[i]=='-'):
  15. if (a[i+1]=='('):
  16. M=calcula(a[i+2:len(a)-1])
  17. total = total- M[0]
  18. i+=M[1]
  19. else:
  20. total=total-int(a[i+1])
  21. i=i+1
  22. elif (a[i]=='*'):
  23. if (a[i+1]=='('):
  24. M=calcula(a[i+2:len(a)-1])
  25. total = total*M[0]
  26. i+=M[1]
  27. else:
  28. total=total*int(a[i+1])
  29. i=i+1
  30. elif (a[i]=='/'):
  31. if (a[i+1]=='('):
  32. M=calcula(a[i+2:len(a)-1])
  33. total = total/M[0]
  34. i+=M[1]
  35. else:
  36. total=total/int(a[i+1])
  37. i=i+1
  38. elif (a[i]==')'):
  39. break
  40. i+=1
  41. return [total,i+2]
  42. opcion=0
  43. while opcion!=2:
  44. print 'Las opciones de la Calculador son: '
  45. print '1)Calcular la secuencia de datos'
  46. print '2)Salir'
  47. opcion=input('Escoga la opcion q desea:  ')
  48. if (opcion==2):
  49. break
  50. else:
  51. a = list (raw_input('Dame la secuencia:   '))
  52. print 'El resultado de la secuencia es:   ',calcula(a)[0]
  53. opcion=input('Si desea salir pulse 2 en caso contrario cualquier tecla:   ')
  54. print 'Gracias por usar la Calculadora lDanny :)'
  55.  


En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [Python] Calculadora
« Respuesta #1 en: 8 Octubre 2010, 18:09 pm »

Mucho más corta :D
Código
  1. opera = raw_input('Ingrese cantidad de divisores: ')
  2. print('Resultado: ' + str(eval(opera)))
Naaaa, es broma, el tuyo realmente revisa la operación y este otro se lo tira a python

Se me ocurre hacerlo con un diccionario en lugar de los IF :D

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
lDanny

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: [Python] Calculadora
« Respuesta #2 en: 8 Octubre 2010, 18:16 pm »

Novlucker, jejeje es verdad es mas corta, la mia es mas larga xDDDDDD
Bueno lo he probado y es verdad que es buena, pero la verdad por lo que yo hice este code era por esto
5+3+4*3(2+3)+5
aunque mi code lo hace, pero para ello ahi que meter parentesis
Y lo de diccionario no lo he mirado todavía, lo mirare para que se me hagan mas cortos los programas
Gracias Novlucker
En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: [Python] Calculadora
« Respuesta #3 en: 8 Octubre 2010, 18:23 pm »

Claro, eso si no lo hace python :D

Mira: http://foro.elhacker.net/net/calculadora_por_jerarquia_c-t262744.0.html

Creo que en realidad con eso te lo estoy empeorando, además de que el code esta en C#, pero si lo entiendes ligeramente (creo que no vas a tener problemas) puedes tomar nuevas ideas ;)

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
lDanny

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: [Python] Calculadora
« Respuesta #4 en: 8 Octubre 2010, 18:34 pm »

Gracias, lo voy a mirar, aunque este calculadora recien lo hice hace 2 horas, solo queria hacer mi calculadora ya que veo, q varios novatos hacen una, solo q  queria hacerla un poco mejor xDDD
Ahora estoy resolviendo los ejercicios de project euler, tratare de mejorar la calculadora (cuando aprenda mas cosas) y cuando la tengo mejorada lo volvere a poner el code para que vena q tal.
Gracias por responder y por las ayudas.
En línea

lDanny

Desconectado Desconectado

Mensajes: 21


Ver Perfil
Re: [Python] Calculadora
« Respuesta #5 en: 9 Octubre 2010, 14:25 pm »

Hola, aqui pongo el codigo de la calculadora pero mejorada, aunque sigue teniendo la limitacion de que es solo para numeros de 1 digito, Gracias Novlucker, por el link que me pasaste ya que en ese link se discutia como podria mejorarse la calculadora y pusieron una idea sobre una pila, y de ahi he mejorado mi funcion.
Usando la lista como pila, ya que lo ultimo que entra es lo primero en salir.
Bueno mi codigo, si ven que se puede mejorar diganlo me ayudaran a mejorar.

Código
  1.  
  2. def Calculadora(L):
  3. cal=0
  4. M=[]
  5. while (len(L)>0):
  6. total=len(L)
  7. if (L[total-1]==')'):
  8. L=L[:total-1]
  9. M=Calculadora(L)
  10. L=M[1]
  11. cal = cal+M[0]
  12. elif (L[total-1]=='+'):
  13. cal=cal+int(L[total-2])
  14. L=L[:total-2]
  15. elif (L[total-1]=='-'):
  16. cal=cal-int(L[total-2])
  17. L=L[:total-2]
  18. elif (L[total-1]=='*'):
  19. cal=cal*int(L[total-2])
  20. L=L[:total-2]
  21. elif (L[total-1]=='/'):
  22. cal=cal/int(L[total-2])
  23. L=L[:total-2]
  24. elif (L[total-1]=='('):
  25. L=L[:total-1]
  26. break
  27. else:
  28. cal=cal+int(L[total-1])
  29. L=L[:total-1]
  30. return [cal,L]
  31. opcion=0
  32. while opcion!=2:
  33. print 'Las opciones de la Calculador son: '
  34. print '1)Calcular la secuencia de datos'
  35. print '2)Salir'
  36. opcion=input('Escoga la opcion q desea:  ')
  37. if (opcion==2):
  38. break
  39. else:
  40. a = list (raw_input('Dame la secuencia:   '))
  41. print 'El resultado de la secuencia es:   ',Calculadora(a)[0]
  42. opcion=input('Si desea salir pulse 2 en caso contrario cualquier tecla:   ')
  43. print 'Gracias por usar la Calculadora lDanny :)'
  44.  
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python] - Calculadora sencilla
Scripting
Meta 5 8,377 Último mensaje 31 Enero 2011, 08:54 am
por Yeison.Eng
Crear calculadora subneting [Python]
Scripting
s3v3n 2 5,655 Último mensaje 11 Abril 2011, 18:33 pm
por s3v3n
[Código-Python-Android]Calculadora por secuencia - JaAViEr(0x5d)
Scripting
0x5d 0 3,360 Último mensaje 27 Diciembre 2011, 02:22 am
por 0x5d
Duda de como hacer una Calculadora (PYTHON)
Scripting
Tuplado 1 3,508 Último mensaje 16 Enero 2012, 01:59 am
por Leyer
Duda Calculadora (python)
Scripting
Tuplado 4 3,486 Último mensaje 20 Enero 2012, 13:15 pm
por fallout20xx
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines