La sentencia else nos permite ejecutar un código alternativo en el caso de que no se cumpla la condición evaluada por la sentencia if.
En la lección anterior de este curso de Python pudimos comprobar cómo la sentencia condicional if
nos permitía ejecutar una porción de código (de una línea o de varias) sólo si se cumplía primero una determinada condición. También vimos cómo esa condición estaba representada en forma de expresión condicional; es decir, por dos o más datos unidos por operadores condicionales.
Pero ¿qué sucedía si la condición, que sigue a la sentencia if
, no se cumplía?
En ese caso, la ejecución del programa ignoraba el bloque de código que seguía a la sentencia if
, y continuaba en la línea siguiente (en caso de haberla).
Sin embargo, puede ocurrir que, si la condición de la sentencia if
no se cumple, sí que nos interese que se ejecute un bloque de código alternativo (igualmente compuesto por una línea o varias). Esto lo conseguiremos gracias a la sentencia condicional else.
La sentencia else
Esta sentencia (cuya traducción sería «sino») encabezará un bloque de código que se ejecutará sólo si la condición de la sentencia if
no se cumple.
La sintaxis de la sentencia else
consistirá en poner esta sentencia, sin sangría alguna con respecto al if
anterior, seguida del signo dos puntos. En la línea o líneas siguientes, escribiremos el código alternativo a ejecutar en caso de no cumplirse la condición. Este bloque de código sí que tendrá una sangría, con respecto a la sentencia else
, para indicar que es un bloque perteneciente a dicha sentencia.
Todo lo explicado puede resumirse con el siguiente esquema:
if condición:
Bloque a ejecutar si la condición se cumple
else:
Bloque a ejecutar si la condición no se cumple
Dos apuntes muy importantes:
- Toda sentencia
else
va asociada a la sentenciaif
más próxima (depende del no cumplimiento de su condición). - Podemos poner una sentencia
if
sin su respectivoelse
, pero no podemos recurrir a una sentenciaelse
que no vaya emparejada con unif
.
Un pequeño ejemplo
Vamos a desarrollar un código en el que podamos utilizar el bloque if – else
estudiado. Se tratará de un sencillo ejemplo en el que se pedirá al usuario que introduzca una clave. Después, evaluará si esta clave es igual a 8578. En el supuesto de que coincida, se imprimirá por consola: «Clave correcta. Puedes acceder». En el caso de no coincidir, mostrará la cadena: «Clave incorrecta. Acceso denegado».
El código quedaría así:

Una vez escrito este código, lo guardaremos, como ya vimos al principio del curso, utilizando la combinación de teclas CTRL + S de nuestro Sublime Text 3. A continuación, podremos ejecutarlo abriendo una ventana nueva de la consola, lo que conseguiremos con la combinación CTRL + ALT + b.
Conviene destacar los siguientes aspectos del programa anterior:
- No es necesario convertir a entero el valor que el usuario introduce por teclado. Esto es así, porque no necesitamos realizar operaciones aritméticas con ese valor ni compararlo con un entero o con un decimal. El valor introducido será una cadena de dígitos que se comparará con otra cadena de dígitos.
- El código decide entre la impresión de dos cadenas, dependiendo de que se cumpla, o no, la igualdad. Si la evaluación de la condición devuelve
True
, se imprimirá la primera cadena; si devuelveFalse
, se imprimirá la segunda. - Al no haber más líneas de código, el programa terminará tras imprimir una de las dos cadenas. Si el programa fuera más extenso, continuaría ejecutando lo que sigue al bloque de la sentencia
else
.
Operadores lógicos
Es posible que, en determinadas ocasiones, pueda interesarte evaluar más de una condición a la vez. En otras palabras: que quieras comprobar si dos, o más, expresiones condicionales son ciertas (si cada una devuelve True
) o si, al menos, una de ellas es cierta (la que devuelve True
). También, te puede interesar averiguar si todas las expresiones condicionales evaluadas son no ciertas (si todas devuelven False
).
Lo descrito resulta especialmente útil, por ejemplo, cuando queremos evaluar más de una condición a la vez con la sentencia if
. Para hacerlo, uniremos las distintas expresiones condicionales con operadores lógicos, que devolverán True
o False
dependiendo de lo que devuelvan las dos expresiones que concatenan.
Para entender esto mejor, repasemos primero la tabla que contiene a los operadores lógicos de Python:
Tabla de operadores lógicos
Operador | Significado | Valor devuelto |
---|---|---|
and | Y (conjunción) | True, si las dos expresiones condicionales que une devuelven True (ambas) |
or | O (conjunción) | True, si al menos una de las dos expresiones condicionales que une devuelve True |
not | Negación | True, si la expresión condicional que le precede devuelve False. En caso contrario devolverá False |
Como podemos apreciar en la tabla, el operador lógico and
sólo nos devolverá True
si ambas expresiones, a las que acompaña, son ciertas.
El operador lógico or
no es tan exigente, ya que sólo requerirá, para devolver True
, que una de las expresiones condicionales sea cierta.
Por último, el operador lógico not
actuará como una especie de conmutador: invertirá el valor booleano devuelto por la expresión condicional que le precede.
Tres sencillos ejemplos te ayudarán a comprender lo explicado:
Ejemplo 1:

El código anterior pedirá que el usuario conteste a dos preguntas, pulsando la tecla «s» o la tecla «n». Las respuestas se almacenan en dos variables que después son evaluadas con un bloque if – else
.
Si ambas variables contienen el carácter «s», al ser ciertas las dos condiciones, el operador lógico and
devolverá True
, por lo que el conjunto de la condición global se cumplirá y se imprimirá por consola: «Es festivo y puedes salir a pasear con paraguas».
Si una de las dos condiciones no fuese cierta, o las dos, el operador lógico and
devolvería False
, lo que activaría el código de la sentencia else
, imprimiendo: «O no es festivo o no está lloviendo».
Ejemplo 2:

En este ejemplo, se pide al usuario que introduzca su edad, y después se evaluará con el bloque if – else
. Si se trata de una edad negativa o mayor que 100 (basta conque se cumpla una de las condiciones), se imprimirá por consola: «Edad no válida»; en el supuesto de que las dos expresiones condicionales resulten falsas (la edad no sea negativa y, a la vez, menor que 100), se mostrará la cadena: «Edad válida».
Ejemplo 3:

En este caso, se hace una pregunta al usuario y éste debe responder «s» o «n». El bloque if – else
evalúa si se introdujo como respuesta «s» (lo que haría que la condición devuelva True
) y, si es así, se invertirá su valor booleano a False
, por lo que se ignorará el bloque de código que depende del if
y se ejecutará el bloque que depende de la sentencia else
. En otras palabras: si el usuario introduce «s», se imprimirá por consola: «Tiene flores»; si teclea «n», se mostrará: «No tiene flores».
El ejemplo anterior puede parecer un contrasentido, pues tiene poca utilidad responder «s» si después vamos a ejecutar el bloque del else
, pero ilustra muy bien el uso del operador lógico not
.
Ejercicios prácticos
Ejercicio 1:
Deberás escribir un código en el que el usuario pueda introducir el nombre de un mes y el día. Después se evaluará si la fecha introducida (mes y día) coincide con la festividad de Navidad: si coincide, se mostrará por consola: «¡Feliz día de Navidad!»; si no hay coincidencia, aparecerá el mensaje: «Hoy no es el día de Navidad».
Ejercicio 2:
Para verificar si un usuario tiene derecho a una beca, deberás crear un programa que le solicité cuáles son sus ingresos anuales y cuántas personas componen su unidad familiar. Se evaluarán estos datos, y si los ingresos son inferiores a 15000€ o la unidad familiar es superior a cuatro miembros se mostrará el mensaje: «Tienes derecho a beca». En el supuesto de que no se cumpla ninguna de las dos condiciones, se imprimirá la cadena: «No tienes derecho a beca».
Las soluciones a estos dos ejercicios podrás encontrarla en el menú Ejercicios resueltos.