Cadena y Calculo

Chema Cortes py en ch3m4.org
Dom Jun 14 22:25:53 CEST 2009


El Sunday 14 June 2009 22:28:21 Fundichely escribió:
> Hermanos de la lista:
> Quisiera saber si existe alguna forma que introduciendo una cadena,
> a = '1 + 2'
> se pueda realizar el calculo de la ecuación , llevando al resultado 1+2=3

En la FAQ de la lista (la dirección está al final de todos los mensajes) 
tienes el modo "correcto" de hacerlo:

<http://python-es-faq.wikidot.com/#toc23>

Te lo pongo a continuación por si no tienes acceso:

"""
¿Cómo hago una calculadora?
Python en sí es una buenísima calculadora:

>>> import math
>>> eval("4.0*sqrt(4)", vars(math), {}) # 8.0

Ver detalles de eval en la documentación, es una función peligrosa en 
cuestiones de seguridad.

Sobra decirlo: si la calculadora a desarrollar es un trabajo académico, a tu 
profesor no le va hacer a gustar la función eval tanto como a tí ;-)
"""


Reincido en lo de que eval es una función muy "peligrosa". Si la cadena a 
evaluar no la controlas (por ejemplo, si proviene de una entrada de usuario) 
entonces hay que limitar mucho lo que se puede evaluar ahí. Un método seguro 
sería:

>>> g={"__builtins__":{}}
>>> eval("1250/25*4.2",g)

La explicación está en el hilo: 
 <http://listas.aditel.org/archivos/python-es/2006-April/012188.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 190 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.python.org/pipermail/python-es/attachments/20090614/371d59fc/attachment.pgp>
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes


Más información sobre la lista de distribución Python-es