Foros del Web » Programando para Internet » Python »

Calculadora con Python

Estas en el tema de Calculadora con Python en el foro de Python en Foros del Web. Necesito saber como hacer que si un usuario responde por ejemplo "45/54" o "78*95+89" (Lo que quiero decir es que la operacion que el usuario ...
  #1 (permalink)  
Antiguo 30/12/2009, 18:35
 
Fecha de Ingreso: septiembre-2009
Mensajes: 22
Antigüedad: 15 años, 2 meses
Puntos: 0
Exclamación Calculadora con Python

Necesito saber como hacer que si un usuario responde por ejemplo "45/54" o "78*95+89" (Lo que quiero decir es que la operacion que el usuario meta varia mucho.) a un raw_input() este se resuelva lo unico que llevo es:

Código:
operacion=raw_input()
Bueno, gracias de antemano.
  #2 (permalink)  
Antiguo 30/12/2009, 21:05
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Calculadora con Python

Opción media:
Validar la entrada con expresiones regulares y hacer las operación con la función eval.
Recomendada.

La Opción:
Usar el algoritmo shunting yard
Altamente recomendada.

Quick and dirty:
Código Python:
Ver original
  1. operacion = input()
Peligrosa y estupida, no recomendada. No lo hagas pueden inyectar código.
  #3 (permalink)  
Antiguo 31/12/2009, 09:16
 
Fecha de Ingreso: septiembre-2009
Mensajes: 22
Antigüedad: 15 años, 2 meses
Puntos: 0
Mensaje Respuesta: Calculadora con Python

Para mi la ultima es la mejor, pero ahora los que pasa es que saque la operacion de un .txt (Archivo de texto) es como si hiziera esto

Código Python:
Ver original
  1. operacionobtenida="48+98"

Como la resuelvo con el ultimo metodo. A y si se puede ponme tu codigo, porfa.
  #4 (permalink)  
Antiguo 31/12/2009, 12:11
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Calculadora con Python

Código Python:
Ver original
  1. f = None
  2. s = ""
  3.  
  4. try:
  5.     f = open("Archivo.txt", "r")
  6.     s = f.read()
  7. except IOError, e:
  8.     print e
  9.     exit(1)
  10. finally:
  11.     if f:
  12.         f.close()
  13.  
  14. try:
  15.     s = eval(s)
  16.     print "Resultado:", s
  17. except SyntaxError, e:
  18.     print "Sintaxis Error"

Insisto, si lo haces de esta manera. Puede incluso que te haga pasar un mal rato.
Mi recomendación es validar con expresiones regulares.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:28.