Hola a todos,

Para un proyecto de fin de cursos, me planteé crear una pequeña y simple calculadora usando Python como lenguaje y WXPython como Widgets gráficos, entre otras cosas, porque es multiplataforma, y en Microsoft Windows, que es donde la necesito ejecutar, ofrece accesibilidad, cosa necesaria para mí y que no ofrece ninguna calculadora gratuita, al menos que yo sepa.

La cosa, es que me gustaría que la calculadora tenga una sintaxis intuitiva, y para eso pido su consejo.

Cuando la calculadora solo se encargaba de sumar y restar, lo que hacía era pasarle la cadena tomada del campo de texto a eval(), intentando encerrar lo más posible la función, por aquello que eval podría ejecutar más código. Parecía todo funcionar de una forma aceptable.

El problema llegó cuando, por exigencias de la escuela, teníamos que trabajar seguido con raíces cuadradas. Bien, implementé la función, pero eso supondría tener que hacer algo como math.sqrt() o sqrt(); no sé la demás gente, pero no suena algo bastante simple de realizar, al menos para alguien que no tiene idea de Python (este proyecto lo comparto con otro compañero ciego que va en la universidad).

La respuesta a esto, fue algo más o menos claro. La idea ahora, es que se carga una cadena a una función, y la cadena se encarga de reemplazar símbolos por las funciones correspondientes, que toma de un par de diccionarios. En pocas palabras, se hace la conversión de algo como "R25" a sqrt(25); luego, se pasa a eval, que ya tiene importado todo math. Si la cadena llegase a dar una excepción, se maneja mostrando un mensaje en el programa, sin más. Cada nueva operación (que se calcula presionando enter o el botón = ) carga la cadena, y la función hace su trabajo.

Pero hay dos motivos que me llevan a hacer esta petición a la lista; una, es que no estoy seguro, pero quiero preguntar si hay una forma más sencilla de hacer que una expresión se vea más común, como el ejemplo anterior; imagino que usar eval tiene sus riesgos por todas partes, y quería preguntar si alguno conoce un parser que pueda ayudarme de modo que pueda cambiar la sintaxis, sería de gran ayuda.

Otra de las cosas que quisiera preguntar, es si se podría conseguir un resultado de un porcentaje, pero escrito de la siguiente forma: 25+50%.

En GCalctool, esto se hace, pero no sé leer el código; no entiendo de muy buena forma cómo lo hacen; se asume que el 50% debe ser del número 25, pero cuando haces 25% se obtiene un 0.25, donde se asume no sé qué, se multiplica 25*1/100, y se obtiene el resultado.

Alguien tiene una idea de cómo podría hacer esto en Python? Alguien me sugirió hacer una especie de compilador o intérprete, porque se podía definir la sintaxis, pero no veo una luz al respecto.

Muchas gracias por su atención; saludos.
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a