GUIA01 Condicional IF Python
GUIA01 Condicional IF Python
... elif ... else ...
if ... elif ... else ...
if ...
if ... else ...
Sangrado bloques
Anidamiento
if ... elif ... else ...
Condiciones no booleanas
En esta lección se trata la estructura de control if ... elif ... else ...: Estas
construcciones permiten condicionar la ejecución de uno o varios bloques
de sentencias al cumplimiento de una o varias condiciones.
Sentencias condicionales: if ...
La estructura de control if ... permite que un programa ejecute unas instrucciones cuando se
cumplan una condición. En inglés "if" significa "si" (condición).
if condición:
aquí van las órdenes que se ejecutan si la condición es cierta
y que pueden ocupar varias líneas
La primera línea contiene la condición a evaluar y es una expresión lógica. Esta línea debe
terminar siempre 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). Es importante señalar que este bloque debe ir
sangrado, puesto que Python utiliza el sangrado para reconocer las líneas que forman un
bloque de instrucciones. El sangrado que se suele utilizar en Python es de cuatro espacios,
pero se pueden utilizar más o menos espacios. Al escribir dos puntos (:) al final de una
línea, el editor sangrará automáticamente las líneas siguientes. Para terminar un bloque,
basta con volver al principio de la línea.
Ha escrito el número -5
Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y
retroceso situados abajo a la derecha.
Ejemplo de if ... 1 - Paso 2
Ejemplo de if ... 1 - Paso 3
Ejemplo de if ... 1 - Paso 4
Ha escrito el número -5
Ejemplo de if ... 2
Ha escrito el número 5
Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y
retroceso situados abajo a la derecha.
Ejemplo de if ... 2 - Paso 2
numero = int(input("Escriba un número positivo: "))
if numero < 0:
print("¡Le he dicho que escriba un número positivo!")
print(f"Ha escrito el número {numero}")
Ejemplo de if ... 2 - Paso 3
Ha escrito el número 5
Como la condición es falsa, no se ejecutan las instrucciones del bloque y el programa salta
a la instrucción siguiente al bloque if ..
La última instrucción del programa imprime el valor introducido y el programa termina.
Bifurcaciones: if ... else ...
La estructura de control if ... else ... permite que un programa ejecute unas instrucciones
cuando se cumple una condición y otras instrucciones cuando no se cumple esa condición.
En inglés "if" significa "si" (condición) y "else" significa "si no". La orden en Python 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 a evaluar. Esta línea debe terminar siempre 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). Es importante señalar que este bloque debe ir
sangrado, puesto que Python utiliza el sangrado para reconocer las líneas que forman un
bloque de instrucciones. El sangrado que se suele utilizar en Python es de cuatro espacios,
pero se pueden utilizar más o menos espacios. Al escribir dos puntos (:) al final de una
línea, IDLE sangrará automáticamente las líneas siguientes. Para terminar un bloque, basta
con volver al principio de la línea.
Después viene la 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). Esta línea también debe terminar siempre por dos puntos (:). La línea con la
orden else no debe incluir nada más que el else y los dos puntos.
En último lugar está el bloque de instrucciones sangrado que corresponde al else.
¡Hasta la próxima!
Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y
retroceso situados abajo a la derecha.
Ejemplo de if ... else ... 1 - Paso 2
Ejemplo de if ... else ... 1 - Paso 3
Ejemplo de if ... else ... 1 - Paso 4
¡Hasta la próxima!
Una vez completado el bloque if, el programa salta a la instrucción siguiente al
bloque if .. else ...
La última instrucción del programa imprime la despedida y el programa termina.
Ejemplo de if ... else ... 2
¡Hasta la próxima!
Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y
retroceso situados abajo a la derecha.
Ejemplo de if ... else ... 2 - Paso 2
edad = int(input("¿Cuántos años tiene? "))
if edad < 18:
print("Es usted menor de edad")
else:
print("Es usted mayor de edad")
print("¡Hasta la próxima!")
Ejemplo de if ... else ... 2 - Paso 3
Ejemplo de if ... else ... 2 - Paso 4
¡Hasta la próxima!
Aunque no es aconsejable, en vez de un bloque if ... else ... se podría escribir un programa
con dos bloques if ...
Si por algún motivo no se quisiera ejecutar ninguna orden en alguno de los bloques, el
bloque de órdenes debe contener al menos la instrucción pass (esta orden le dice a Python
que no tiene que hacer nada).
El primer ejemplo era sólo un ejemplo para mostrar cómo se utiliza la instrucción pass.
Normalmente, la instrucción pass se utiliza para "rellenar" un bloque de instrucciones que
todavía no hemos escrito y poder ejecutar el programa, ya que Python requiere que se
escriba alguna instrucción en cualquier bloque.
^
^
En este tercer caso, como la segunda instrucción no tiene sangrado, Python entiende
que la bifurcación if ha terminado, por lo que al encontrar un else sin
su if correspondiente se produce el error "invalid syntax" (sintaxis no válida).
edad = int(input("¿Cuántos años tiene? "))
if edad < 18:
print("Es usted menor de edad")
print("Recuerde que está en la edad de aprender")
else:
print("Es usted mayor de edad")
print("Recuerde que debe seguir aprendiendo")
print("¡Hasta la próxima!")
else:
^
r. Rojo a. Azul
v. Verde r. Rojo
Elija otro color (v o r): v
¡Hasta la próxima!
Puede ver la ejecución paso a paso de este programa utilizando los iconos de avance y
retroceso situados abajo a la derecha.
Ejemplo de sentencias condicionales anidadas - Paso 2
r. Rojo a. Azul
Ejemplo de sentencias condicionales anidadas - Paso 2
r. Rojo a. Azul
Ejemplo de sentencias condicionales anidadas - Paso 3
r. Rojo a. Azul
Elija un color (r o a): a
Ejemplo de sentencias condicionales anidadas - Paso 4
r. Rojo a. Azul
v. Verde r. Rojo
Ejemplo de sentencias condicionales anidadas - Paso 5
r. Rojo a. Azul
v. Verde r. Rojo
Imprime la segunda pregunta y espera a que el usuario escriba la respuesta y pulse Intro,
guardando la respuesta en la variable "segunda".
Ejemplo de sentencias condicionales anidadas - Paso 6
r. Rojo a. Azul
v. Verde r. Rojo
Ejemplo de sentencias condicionales anidadas - Paso 7
r. Rojo a. Azul
v. Verde r. Rojo
Ejemplo de sentencias condicionales anidadas - Paso 8
r. Rojo a. Azul
v. Verde r. Rojo
¡Hasta la próxima!
Se pueden anidar tantas sentencias condicionales como se desee.
if condición_1:
bloque 1
elif condición_2:
bloque 2
else:
bloque 3
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
Si no se cumplen ni la condición 1 ni la condición 2, se ejecuta el bloque 3.
if condición_1:
bloque 1
else:
if condición_2:
bloque 2
else:
bloque 3
Los casos son mutuamente excluyentes, ya que un valor sólo puede estar en uno de
los casos.
o Un posible programa es el siguiente:
o edad = int(input("¿Cuántos años tiene? "))
o if edad >= 18:
o print("Es usted mayor de edad")
o elif edad < 0:
o print("No se puede tener una edad negativa")
o else:
o print("Es usted menor de edad")
o El programa anterior funciona correctamente, pero los casos están
desordenados. Es mejor escribirlos en orden, para asegurarnos de no olvidar
ninguna de las posibles situaciones. Por ejemplo, podríamos escribirlos de
menor a mayor edad, aunque eso obliga a escribir otras condiciones:
o edad = int(input("¿Cuántos años tiene? "))
o if edad < 0:
o print("No se puede tener una edad negativa")
o elif edad >= 0 and edad < 18:
o print("Es usted menor de edad")
o else:
o print("Es usted mayor de edad")
o En el programa anterior se pueden simplificar las comparaciones:
o edad = int(input("¿Cuántos años tiene? "))
o if edad < 0:
o print("No se puede tener una edad negativa")
o elif edad < 18:
o print("Es usted menor de edad")
o else:
o print("Es usted mayor de edad")
Estos dos programas son equivalentes porque en una estructura if ... elif ..
else cuando se cumple una de las comparaciones Python ya no evalúa las
siguientes condiciones. En este caso, si el programa tiene que comprobar la
segunda comparación (la del elif), es porque no se ha cumplido la primera
(la del if). Y si no se ha cumplido la primera es que edad es mayor que 0,
por lo que no es necesario comprobarlo en la segunda condición.
o Pero hay que tener cuidado, porque si los casos del programa anterior se
ordenan al revés manteniendo las condiciones, el programa no funcionaría
como se espera, puesto que al escribir un valor negativo mostraría el
mensaje "Es usted menor de edad".
o # Este programa no funciona correctamente
o edad = int(input("¿Cuántos años tiene? "))
o if edad < 18:
o print("Es usted menor de edad")
o elif edad < 0:
o print("No se puede tener una edad negativa")
o else:
o print("Es usted mayor de edad")
2. Cuando unos casos incluyen a otros
Si las condiciones if ... elif ... cubren todas las posibilidades, se puede no escribir el
bloque else:
Condiciones no booleanas
Dado que cualquier variable puede interpretarse como una variable booleana, si la
condición es una comparación con cero, podemos omitir la comparación.
Por ejemplo, el programa siguiente:
Cuando se está aprendiendo a programar, esta notación puede resultar un poco críptica, por
lo que se recomienda empezar escribiendo las comparaciones completas. Más adelante,
cuando nos hayamos familiarizado con las expresiones lógicas, nos resultará más natural
utilizarla.