[Python-es] Ayuda con sintaxis de Calculadora en Python usando WXPython

Chema Cortes pych3m4 en gmail.com
Jue Ene 24 18:16:56 CET 2013


El día 23 de enero de 2013 18:34, manuel <manuelcortez00 en gmail.com> escribió:

> 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.

Hay un modo sencillo de hacer la calculadora que es dar los resultados
parciales a medida que se van aplicando los operadores. Por ejemplo,
cuando sumas números, cada vez que se pulsa la tecla + se obtiene cada
resultado parcial de la suma.

Tal como lo planteas, tu idea es algo más complicada. Lo simple sería
escribir la operación como si fuera una expresión python y dejar que
la evalúe el intérprete. Si lo quieres hacer de otro modo, tendrás que
empezar por distinguir qué operadores son totalizadores (cálculos
parciales y totales) y en qué posición actúan (prefix/infix/sufix).
Tal como creo que intuyes, no es nada fácil y necesitarás conocer algo
de "teoría de máquinas de estados finitos" para entenderlo, algo que
se sale bastante de un proyecto de final de curso.

No tengo una recomendación clara que te pueda ayudar. Si sientes
curiosidad, tal vez podría buscarte algo de código para hacer una
calculadora.


Sobre lo que preguntas del tanto por ciento, se suelen representan los
números reales del 0 al 1 como factores multiplicativos, para lo que
se muestran multiplicados por 100 o por 1000, añadiendo el sufijo % ó
‰ (unicode U+2030) respectivamente. Así, por ejemplo, el 50%
representa al factor 0.5, más conocido por 1/2

En el caso de 25+50% se trataría de una operación de
descuentos/incrementos, donde a 25 le sumas un 50% (de 25). El porqué
el operador % funciona ahora así en lugar de limitarse a convertir 50%
en 0.5 se debe a que la calculadora ha cambiado de estado al iniciarse
la suma. En una suma, el 50% se toma como operación de incremento en
lugar de factor multiplicativo. Es un ejemplo de funcionamiento de
máquina de estados finitos.


Por otra parte, no sé si conoces la Fundación ONCE española. Se dedica
a adaptar dispositivos y aplicaciones a usuarios con deficiencia
visual o motora (tiflotecnología) a través de su centro CIDAT
(http://cidat.once.es). Mira en su FTP.

Así mismo, existe una calculadora llamada ATCalc que se adapta a tus
necesidades. Es programable (en pascal), lo que te puede dar ideas
para tu calculadora:

http://atcalc.sourceforge.net/indexESP.htm




-- 
Hyperreals *R: http://ch3m4.org/blog
Quarks, bits y otras criaturas infinitesimales


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