Volver al índice If... elif... else...

En esta lección aprenderás:


Verdadero y falso

En el lenguaje Python lo falso se representa por el valor 0 y lo verdadero por el valor 1. Por ejemplo, al escribir una desigualdad, si la comparación es cierta Python le asigna el valor 1 (verdadero) y si es mentira Python le asigna el valor 0. Prueba los siguientes ejemplos en IDLE:

>>> 2<3

1

>>> 2>3

0

En general, lo falso se puede representar por el valor 0 o por cualquier elemento vacío, mientras que cualquier otro valor se considera verdadero.


Para realizar comparaciones más complejas puedes utilizar las operaciones lógicas not, or, and y "o exclusivo":

Al escribir expresiones más complejas es conveniente que utilices paréntesis para evitar ambigüedades. Prueba los siguientes ejemplos:

>>> not(3>2) # Falso porque la comparación es cierta

0

>>> (3>2) and (4>5) # Falso porque la segunda comparación no es cierta

0

>>> (3>2) or (4>5) # Verdadero porque la primera comparación es cierta

1

>>> (3>2) ^ (5>4) # Falso porque las dos comparaciones son ciertas

0

>>> ((3>2) or (4>5)) and (2<1) # Falso porque la última comparación es falsa

0


Cuando el resultado de una operación lógica es falso, Python devuelve el valor 0, mientras que si es verdadero no tiene por qué devolver siempre el valor 1, aunque siempre devolverá un valor distinto de 0, como muestra el siguiente ejemplo:

>>> (2>3) or 3 # Verdadero porque 3 es distinto de 0 y por tanto verdadero

3


Comparaciones

Ya has visto las desigualdades en el apartado anterior. Para comparar si dos cosas son iguales, utiliza dos signos de igualdad seguidos (==). Para comparar si dos cosas son diferentes, puedes utilizar dos símbolos, o la exclamación y el igual (!=) o los dos signos de desigualdad seguidos (<>). El manual de Python aconseja utilizar el primer símbolo (!=). Prueba los siguientes ejemplos:

>>> a, b, c = 2.5, 4, 2.5

>>> a == b, a == c

(0, 1)

>>> a != b, a <> c

(1, 0)


Los símbolos de inferior o igual y superior o igual son los siguientes: <= y >= respectivamente.

>>> a, b, c = 2.5, 4, 2.5

>>> a >= b, a <= c

(0, 1)


Para comprobar que un valor está situado entre dos valores puedes encadenar dos comparaciones. La comparación es cierta si las dos partes lo son, como en el siguiente ejemplo

>>> a, b, c = 2, 4, 3.5

>>> a < c < b, a <= c > b

(1, 0)

De hecho, puedes encadenar tantas comparaciones como quieras. El conjunto es cierto si todas las partes lo son, como en el siguiente ejemplo

>>> a, b, c, d, e, f = 1, 2, 3, 4, 5, 6

>>> a < b < c < d < e < f, a < c < e < b, a < d == e-1 < f

(1, 0, 1)


Bifurcaciones

A menudo te interesará que un programa ejecute unas órdenes cuando se cumplan unas condiciones y otras cuando no. En esos casos se utiliza la orden if ... else ..... En inglés "if" significa "si" (condición) y "else" significa "si no". La orden en Pyhton se escribe así:

if condición:
  aquí van las órdenes que se ejecutan si la condición es cierta
  y que pueden ocupar varias líneas
else:
  y aquí van las órdenes que se ejecutan si la condición es
  falsa y que también pueden ocupar varias líneas

La primera línea contiene la condición que quieres evaluar. Fíjate en que la línea termina por dos puntos.

A continuación viene el bloque de órdenes que se ejecutan cuando la condición se cumple (es decir, cuando la condición es verdadera). Fíjate en que todo el bloque está indentado. Este detalle es bastante importante, puesto que Python utiliza el indentado para reconocer las líneas que forman un bloque de instrucciones. De hecho, cada vez que acabes una línea con dos puntos, Python indentará las líneas siguientes. Cuando quieras terminar un bloque, basta con volver al principio de la línea.

Después viene una línea con la orden else, que indica a Python que el bloque que viene a continuación se tiene que ejecutar cuando la condición no se cumpla (es decir, cuando sea falsa). Fíjate en que también hay dos puntos al final de la línea

En último lugar está el bloque de instrucciones indentado que corresponde al else.


Vamos a ver un ejemplo:

edad = int(raw_input('¿Cuántos años tienes?'))
if edad<18:
  print 'Eres menor de edad'
else:
  print 'Eres mayor de edad'
  print '¡Hasta la próxima!'

Este programa te pregunta cuántos años tienes y almacena la respuesta en la variable "edad". Después comprueba si la edad es inferior a 18 años. Si esta comparación es cierta, el programa escribe que eres menor de edad y si es falsa escribe que eres mayor de edad. Finalmente el programa siempre se despide, ya que la última instrucción está fuera de cualquier bloque y por tanto se ejecuta siempre.


El bloque else puede omitirse, como muestra el siguiente ejemplo.

numero = int(raw_input('Escribe un número positivo: '))

if numero<0:

print '¡Te he dicho que escribas un número positivo!'

print 'Has escrito el número', numero

El bloque if no puede omitirse porque contiene la comparación, pero si por algún motivo no quisieras que se ejecutara ninguna orden, el bloque de órdenes del if debe contener al menos la orden pass (esta orden le dice a Python que no tiene que hacer nada).

edad = int(raw_input('¿Cuántos años tienes?'))
if edad<120:
  pass
else:
  print '¡Mentiroso!'
  print 'Dices que tienes', edad, 'años'

Evidentemente este programa podría simplificarse cambiando la desigualdad. Es sólo un ejemplo para mostrarte cómo se utiliza la orden pass.


Más de dos alternativas

Cuando no quieras simplemente elegir entre dos opciones, sino entre varias, puedes utilizar la orden elif.

if condición_1:
  bloque 1
elif condición_2:
  bloque 2
else:
  bloque 3

Puedes poner tantos elif como quieras. Si se cumple la condición 1 se ejecuta el bloque 1, si no se cumple la condición 1 pero sí que se cumple la condición 2 se ejecuta el bloque 2 (y así sucesivamente si hubiera varios elif). El bloque else (que es opcional) se ejecuta si no se cumple ninguna de las condiciones anteriores:

Vamos a ver un ejemplo:

edad = int(raw_input('¿Cuántos años tienes?'))
if edad<0:
  print '¿Todavía no has nacido?'
elif edad<16:
  print 'Legalmente todavía no puedes trabajar'
elif edad<65:
  print 'A esta edad, puedes trabajar'
elif edad<120:
  print 'Supongo que estarás ya jubilado/a'
else:
  print '¿Seguro que tienes', edad, 'años?'

El orden en que aparecen las distintas comparaciones es importante, pues cuando se cumple una de las comparaciones, Python ya no considera las siguientes condiciones, aunque se cumplan. En general, se deben escribir primero los casos particulares y después los casos generales.


Ejercicios relacionados con este tema: Ejercicios de if... elif... else...
Siguiente lección: La función range()

Autor: Bartolomé Sintes Marco
Última modificación de esta página: 7 de octubre de 2002