4.7. Condiciones anidadas

Una condición puede estar anidada dentro de otra. Podíamos haber escrito así el ejemplo de tricotomía:

   1: if x == y:
   2:     print x, "y", y, "son iguales"
   3: else:
   4:     if x < y:
   5:         print 
   6:         x, "es menor que", y
   7:     else:
   8:         print x, "es mayor que", y

La condicion externa que contiene dos ramas. La primera rama contiene una sentencia simple de salida. La segunda rama contiene otra sentencia if, que tiene dos ramas en sí misma. Estas dos ramas son ambas sentencias de salida de datos, aunque podrían ser igualmente sentencias condicionales.


Aunque la indentacion de las sentencias hace la estructura evidente, las condiciones anidadas en seguida se vuelven difíciles de leer. En general es una buena idea evitarlas cuando pueda.


Los operadores logicos suelen facilitar un modo de simplificar las sentencias condicionales anidadas. Por ejemplo, podemos reescribir el codigo siguiente con un solo condicional:




   1: if 0 < x:
   2:     if x < 10:
   3:         print "x es un numero positivo de un dígito."


La sentencia print solo se ejecuta si conseguimos superar ambos condicionales, así que podemos usar el operador and:

0