06 September 2012

Operadores ternarios en Python



Aprendiendo Python una de las primeras cosas interesantes con las que me encontré es con operadores que toman 3 parámetros. Veamos (en inglés) un extracto de un tutorial en PDF:


The basic form of the operator is 
expression if condition else expression 

Python evaluates the condition – in the middle – first. If the condition is True, then the left-hand expression is evaluated, and that’s the value of the operation. If the condition is False, then the right-hand expression is evaluated, and that’s the value of the operation. Note that the condition is always evaluated. Only one of the other two expressions is evaluated, making this a kind of short-cut operator like and and or.
Here are a couple of examples.
average = sum/count if count != 0 else None
oddSum = oddSum + ( n if n % 2 == 1 else 0 )
The intent is to have an English-like reading of the statement. “The average is the sum divided by the count if the count is non-zero; else the average is None”.


Es una construcción algo rara pero simpática.

Primer post

Saludos programadores, curiosos y demás habitantes de la blogósfera:

  Decidí crear este blog como refuerzo a un grupo de FB en el que mis amigos, otrora ávidos de conocimientos informáticos, no aportan mucho. En principio hablaré de mis lenguajes de programación favoritos sin un orden específico, es decir que los posts irán apareciendo a medida que se me presenten situaciones frente al computador.

  Normalmente hablaría de Delphi/Lazarus (léase Pascal) pues es casi mi lenguaje nativo. Sin embargo, no estará restringido a esos. De hecho, es muy probable que los textos sobre Python los superen. La razón es que actualmente estoy de lleno con ese lenguaje y me tiene muy contento. Hablaré muy pero muy poco de C/C++/C# y sus variantes pues, reconozcámoslo, no me gusta el C. Y aunque Python está hecho en C no lleva la carga de complejidad del mismo.

  Mi visión de la programación es igual a la del LEGO. Buscas tus bloques y armas lo que quieres, y en el proceso te diviertes. Eso no implica que de vez en cuando no tengas que crear tus propias "fichas", pero de ahí a crear todo el set de juego hay demasiada diferencia. Me niego a reinventar la rueda. Recordando a Bernard de Chartres una frase mal atribuida a Isaac Newton que dice en latín:

"Nos esse quasi nanos, gigantium humeris insidentes, ut possimus plura eis et remotiora videre, non utique proprii visus acumine, aut eminentia corporis, sed quia in altum subvenimur et extollimur magnitudine gigantea"


  O como la conoce la mayoría:

"Si he logrado ver más lejos, ha sido porque he subido a hombros de gigantes"


  Con esto en mente es que yo programo.