Una rareza de Python: La asociatividad de los comparadores
Algunos lenguajes de programacíon de uso común, como C y C++, hacen que sus operadores de comparacion sean asociativos, por lo que presentan el problema de que expresiones como 2 < 1 < 4 producen un resultado que parece ilógico. Al ser asociativo por la izquierda el operador de comparacion <, se evalúa primero la subexpresion 2 < 1. El resultado es falso, que en C y C++ se representa con el valor 0. A continuacion se evalúa la comparación 0 < 4, cuyo resultado es… ¡cierto! Asi pues, para C y C++ es cierto que 2 < 1 < 4.
Pascal es más rigido aún y llega a prohibir expresiones como 2 < 1 < 4. En Pascal hay un tipo de datos denominado boolean cuyos valores válidos son true y false. Pascal no permite operar entre valores de tipos diferentes, así que la expresion 2 < 1 se evalúa al valor boolean false, que no se puede comparar con un entero al tratar de calcular el valor de false < 4. En consecuencia, se produce un error de tipos si intentamos encadenar comparaciones.
La mayor parte de los lenguajes de programación convencionales opta por la solución del C o por la solución del Pascal. Cuando aprendas otro lenguaje te costará <<deshabituarte>> de la elegancia con que Python resuelve los encadenamientos de comparaciones.
Etiquetas: Pythoneando, pythonear




















(On Julio 1st, 2009 at 7:14 PM)
jaja la verdad es k si
nos acostumbramos a la manera de programar en otros lenguajes
pascal me daba miedo xP
(On Julio 2nd, 2009 at 7:09 AM)
A mi no me da miedo ningun lenguaje, solo que si hay algunos que me dan mas que hueva como es el caso de JAVA…no mas ni madre que me gusta ese lenguaje…bdaaaaa =-S. Prefiero no escribir tanto jejejje. =-p