Sentencias condicionales¶
Hasta ahora, hemos ejecutado las sentencias de un programa en secuencia, una tras otra, pero esa secuencia se puede alterar.
Veamos el primer caso. Vamos a ejecutar una sentencia solo si se da una condición.
| Condicional1.py | |
|---|---|
1 2 3 4 5 6 | |
Lo que al ejecutarse muestra algo así como:
Introduzca su nombre: Julián
Bienvenido, Julián
o bien:
Introduzca su nombre: x
x, ¿no es un nombre demasiado corto?
La palabra if significa "si". La palabra else significa "en caso contrario". En el ejemplo, vemos que las líneas 4 y 6 no se ejecutan siempre. Previamente se evalúa una condición y se ejecuta una u otra.
En líneas generales, la sintaxis de una sentencia condicional es:
if condición :
sentencia a ejecutar si la condición se cumple
sentencia condicional 2
sentencia condicional 3
else :
sentencia 4, a ejecutar si la condición no se cumple
sentencia 5
sentencia 6
otras sentencias que deben ejecutarse siempre
A tener en cuenta:
-
Los bloques condicionales pueden estar formados por una o varias sentencias
-
Todo bloque condicional se delimita mediante sangría.
-
El bloque
elsese ejecuta cuando la condición no se cumple. Es opcional, y se puede omitir:if condición : sentencias a ejecutar si la condición se cumple otras sentencias que deben ejecutarse siempre -
No olvidar los dos puntos que delimitan el final de las líneas if y else:
if condición : sentencias else : sentencias
Sangría¶
La sangría que delimita un bloque puede estar formada por espacios o por caracteres de tabulación, pero dentro de un bloque, no podemos mezclar un estilo con otro. Si en una línea ponemos tabuladores y en otra espacios, obtendremos un mensaje de error:
TabError: inconsistent use of tabs and spaces in indentation
También tenemos que vigilar que la sangría sea consistente para todas las líneas del bloque. Lo siguiente es erróneo, porque las líneas 4 y 5 no están alineadas:
| Condicional1.py | |
|---|---|
1 2 3 4 5 6 7 | |
Cuestión de estilo
El número de espacios a utilizar para la sangría es una cuestión de estilo personal, al igual que lo es el uso de mayúsculas y minúsculas. Sin embargo, conviene adoptar un estilo ampliamente aceptado por la comunidad de programadores Python. Esto facilita el examen de los programas escritos por otras personas.
La PEP nº 8 es un documento que propone unas reglas de estilo que se recomienda seguir. En cuanto a la sangría, dice que:
Spaces are the preferred indentation method.
Use 4 spaces per indentation level.
Operadores¶
La condición a evaluar ha de ser una expresión cuyo resultado ha de ser
Verdadero o Falso. Al igual que en las expresiones aritméticas tenemos
los operadores +, -, * y /, en las expresiones de comparación tenemos
los siguientes operadores:
- Menor que:
a < b - Menor o igual que:
a <= b - Mayor que:
a > b - Mayor o igual que:
a >= b - Igual a:
a == b - Distinto de:
a != b
Un ejemplo:
| Contraseña.py | |
|---|---|
1 2 3 4 5 | |
En la segunda línea usamos el operador de igualdad ==.
¿Por que es un doble símbolo ==? Para no confundirlo con el operador de
asignación. Es decir:
x=10asigna un valor 10 a la variable xx==10comprueba que valor de la variable x es 10
Los operadores formados por dos símbolos no admiten un espacio entre ellos, porque se convertirían en dos tokens separados. Es decir, no podemos escribir:
a > = b
En su lugar, debemos escribir:
a >= b
La sentencia pass¶
Hay veces que necesitamos decir si se da una condición, no hacer nada, en caso contrario hacer esto otro.
¿Como se indica que no queremos hacer nada? Con la sentencia pass:
| Condicional2.py | |
|---|---|
1 2 3 4 5 6 7 8 | |
Condiciones múltiples¶
Cuando tenemos que controlar varias situaciones, se utilizan tres bloques, if,
elif y else:
| Condicional2.py | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
A tener en cuenta:
-
elifsignifica else if. Sirve para comprobar otras condiciones cuando lo anterior no se cumple. -
los bloques
elifyelseson opcionales. Si se ponen,elsedebe ser el último bloque. -
puede haber tantos bloques
elifcomo queramos. -
tanto las sentencias
ifcomoelifdeben ir acompañadas de una expresión condicional. La sentenciaelsenunca lleva expresión condicional, porque significa si todo lo demás falla.
Bloque anidados¶
Un bloque condicional está formado por sentencias que, a su vez, pueden contener otros bloques condicionales, delimitados por nuevos niveles de sangrado.
Por ejemplo:
| Condicional2.py | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Esta es una alternativa al uso de sentencias elif. ¿Que estilo usar?
En líneas generales, el que facilite el examen del programa y lo haga más
sencillo de revisar.