0% encontró este documento útil (0 votos)
118 vistas

GUIA01 Condicional IF Python

Este documento explica la estructura de control if-elif-else en Python. Explica que if permite ejecutar código condicionalmente si se cumple una condición, elif agrega condiciones adicionales, y else ejecuta código si ninguna condición se cumple. Luego proporciona ejemplos de if, if-else, y anidamiento con diagrama de flujo para ilustrar la lógica condicional.

Cargado por

Freddy Colque
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
118 vistas

GUIA01 Condicional IF Python

Este documento explica la estructura de control if-elif-else en Python. Explica que if permite ejecutar código condicionalmente si se cumple una condición, elif agrega condiciones adicionales, y else ejecuta código si ninguna condición se cumple. Luego proporciona ejemplos de if, if-else, y anidamiento con diagrama de flujo para ilustrar la lógica condicional.

Cargado por

Freddy Colque
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 29

if 

... 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).

Sintaxis de la sentencia condicional if ...

La sintaxis de la construcción if es la siguiente:

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

La ejecución de esta construcción es la siguiente:


 La condición se evalúa siempre.
o Si el resultado es True se ejecuta el bloque de sentencias
o Si el resultado es False no se ejecuta el bloque de sentencias.

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.

Diagrama de flujo de la sentencia condicional condicional if ...

El diagrama de flujo siguiente muestra la ejecución de una sentencia if ...:


DIAGRAMA DE FLUJO: SENTENCIA IFHaga clic en los botones de avance y
retrocesopara ver la ejecución paso a pasoEl programa llega al if.INICIOEvalúa la
condición.CONDICIÓNSi la condición es True, ejecuta el bloque ...TrueBLOQUE... y
termina el if.FINSi la condición es False,termina el if directamente.FalseFIN

Programas de ejemplo con sentencias condicionales if ...

Veamos un ejemplo. El programa siguiente pide un número positivos al usuario y almacena


la respuesta en la variable "numero". Después comprueba si el número es negativo. Si lo es,
el programa avisa que no era eso lo que se había pedido. Finalmente, el programa imprime
siempre el valor introducido por el usuario. A continuación se pueden ver dos ejecuciones
paso a paso de ese programa. En la primera el usuario escribe un valor negativo y en la
segunda el usuario escribe un valor positivo:
Ejemplo de if ... 1

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}")

Escriba un número positivo: -5

¡Le he dicho que escriba un número positivo!

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 1

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}")

Escriba un número positivo: -5


Se ejecuta la primera instrucción del programa.
En este caso, imprime la pregunta y espera a que el usuario escriba la respuesta y pulse
Intro, guardando la respuesta en la variable "numero".

 
Ejemplo de if ... 1 - 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}")

Escriba un número positivo: -5

A continuación se evalúa la condición (numero < 0).


En este caso, la condición es cierta (True), puesto que -5 es inferior a 0.

 
Ejemplo de if ... 1 - Paso 3

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}")

Escriba un número positivo: -5

¡Le he dicho que escriba un número positivo!

Como la condición es cierta (True), a continuación se ejecutan las instrucciones del


bloque if.
En este caso el bloque consta de una sola instrucción que imprime el texto "¡Le he dicho
que escriba un número positivo!".

 
Ejemplo de if ... 1 - Paso 4

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}")

Escriba un número positivo: -5

¡Le he dicho que escriba un número positivo!

Ha escrito el número -5

Una vez completado el bloque if, 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.

 
Ejemplo de if ... 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}")

Escriba un número positivo: 5

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 1

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}")

Escriba un número positivo: 5

Se ejecuta la primera instrucción del programa.


En este caso, imprime la pregunta y espera a que el usuario escriba la respuesta y pulse
Intro, guardando la respuesta en la variable "numero".

 
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}")

Escriba un número positivo: 5

A continuación se evalúa la condición (numero < 0).


En este caso, la condición es falsa (False), puesto que 5 no es inferior a 0.

 
Ejemplo de if ... 2 - Paso 3

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}")

Escriba un número positivo: 5

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í:

Sintaxis de la sentencia condicional if ... else ...

La sintaxis de la construcción if ... else ... es la siguiente:

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 ejecución de esta construcción es la siguiente:


 La condición se evalúa siempre.
o Si el resultado es True se ejecuta solamente el bloque de sentencias 1
o Si el resultado es False se ejecuta solamente el bloque de sentencias 2.

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.

Diagrama de flujo de la sentencia condicional if ... else ...

El diagrama de flujo siguiente muestra la ejecución de una sentencia if ... else ...:


DIAGRAMA DE FLUJO: SENTENCIA IF ... ELSE ...Haga clic en los botones de avance
y retrocesopara ver la ejecución paso a pasoEl programa llega al if else.INICIOEvalúa la
condición.CONDICIÓNSi la condición es True,ejecuta el bloque correspondiente
...TrueBLOQUE 1... y termina el if else.FINSi la condición es False,ejecuta el bloque
correspondiente ...FalseBLOQUE 2... y termina el if else.FIN

Programas de ejemplo con sentencias condicionales if ... else ...

Veamos un ejemplo. El programa siguiente pregunta la edad al usuario 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 es menor de edad y si es falsa escribe que es
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. A continuación se pueden ver
dos ejecuciones paso a paso de ese programa:
Ejemplo de if ... else ... 1

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!")

¿Cuántos años tiene? 17

Es usted menor de edad

¡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 1

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!")

¿Cuántos años tiene? 17

Se ejecuta la primera instrucción del programa.


En este caso, imprime la pregunta y espera a que el usuario escriba la respuesta y pulse
Intro, guardando la respuesta en la variable "edad".

 
Ejemplo de if ... else ... 1 - 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!")

¿Cuántos años tiene? 17

A continuación se evalúa la condición (edad < 18).


En este caso, la condición es cierta (True), puesto que 17 es inferior a 18.

 
Ejemplo de if ... else ... 1 - Paso 3

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!")

¿Cuántos años tiene? 17

Es usted menor de edad

Como la condición es cierta (True), a continuación se ejecutan las instrucciones del


bloque if.
En este caso el bloque consta de una sola instrucción que imprime el texto "Es usted menor
de edad".

 
Ejemplo de if ... else ... 1 - Paso 4

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!")

¿Cuántos años tiene? 17

Es usted menor de edad

¡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

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!")

¿Cuántos años tiene? 25

Es usted mayor de edad

¡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 1

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!")

¿Cuántos años tiene? 25

Se ejecuta la primera instrucción del programa.


En este caso, imprime la pregunta y espera a que el usuario escriba la respuesta y pulse
Intro, guardando la respuesta en la variable "edad".

 
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!")

¿Cuántos años tiene? 25

A continuación se evalúa la condición (edad < 18).


En este caso, la condición es falsa (False), puesto que 25 es superior a 18.

 
Ejemplo de if ... else ... 2 - Paso 3

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!")

¿Cuántos años tiene? 25

Es usted mayor de edad

Como la condición es falsa (False), a continuación se ejecutan las instrucciones del


bloque else.
En este caso el bloque consta de una sola instrucción que imprime el texto "Es usted mayor
de edad".

 
Ejemplo de if ... else ... 2 - Paso 4

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!")
¿Cuántos años tiene? 25

Es usted mayor de edad

¡Hasta la próxima!

Una vez completado el bloque else, 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.

 
Aunque no es aconsejable, en vez de un bloque if ... else ... se podría escribir un programa
con dos bloques if ...

edad = int(input("¿Cuántos años tiene? "))


if edad < 18:
print("Es usted menor de edad")
if edad >= 18:
print("Es usted mayor de edad")
print("¡Hasta la próxima!")

Es mejor no hacerlo así por dos motivos:


 al poner dos bloques if estamos obligando a Python a evaluar siempre las dos
condiciones, mientras que en un bloque if ... else ... sólo se evalúa una condición.
En un programa sencillo la diferencia no es apreciable, pero en programas que
ejecutan muchas comparaciones, el impacto puede ser apreciable.
 utilizando else nos ahorramos escribir una condición (además, escribiendo la
condición nos podemos equivocar, pero escribiendo else no).
 utilizando if ... else nos aseguramos de que se ejecuta uno de los dos bloques de
instrucciones. Utilizando dos if cabría la posibilidad de que no se cumpliera ninguna
de las dos condiciones y no se ejecutara ninguno de los dos bloques de
instrucciones.

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).

edad = int(input("¿Cuántos años tiene? "))


if edad < 120:
pass
else:
print("¡No me lo creo!")
print(f"Usted dice que tiene {edad} años.")

Evidentemente este programa podría simplificarse cambiando la desigualdad.

edad = int(input("¿Cuántos años tiene? "))


if edad >= 120:
print("¡No me lo creo!")
print(f"Usted dice que tiene {edad} años.")

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.

Sangrado de los bloques


Un bloque de instrucciones puede contener varias instrucciones. Todas las instrucciones del
bloque deben tener el mismo sangrado:

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!")

Se aconseja utilizar siempre el mismo número de espacios en el sangrado, aunque Python


permite que cada bloque tenga un número distinto. El siguiente programa es correcto:

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!")
Lo que no se permite es que en un mismo bloque haya instrucciones con distintos
sangrados. Dependiendo del orden de los sangrados, el mensaje de error al intentar ejecutar
el programa será diferente:
 En este primer caso, la primera instrucción determina el sangrado de ese bloque, por
lo que al encontrar la segunda instrucción, con un sangrado mayor, se produce el
error "unexpected indent" (sangrado inesperado).
 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!")

 File "prueba.py", line 4

 print("Recuerde que está en la edad de aprender")

 ^

 IndentationError: unexpected indent

En IDLE se muestra una ventana indicando el error:

 En este segundo caso, la primera instrucción determina el sangrado de ese bloque,


por lo que al encontrar la segunda instrucción, con un sangrado menor, Python
entiende que esa instrucción pertenece a otro bloque, pero como no hay ningún
bloque con ese nivel de sangrado, se produce el error "unindent does not match any
outer indentation level" (el sangrado no coincide con el de ningún nivel superior).
 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!")

 File "prueba.py", line 4

 print("Recuerde que está en la edad de aprender")

 ^

 IndentationError: unindent does not match any outer indentation level

En IDLE se muestra una ventana indicando el error:

 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!")

 File "prueba.py", line 5

 else:

 ^

 SyntaxError: invalid syntax

En IDLE se muestra una ventana indicando el error:


Sentencias condicionales anidadas
Una sentencia condicional puede contener a su vez otra sentencia anidada.
Por ejemplo, el programa siguiente muestra el color obtenido al mezclar dos colores en la
pantalla:
Ejemplo de sentencias condicionales anidadas

print("Este programa mezcla dos colores.")


print(" r. Rojo a. Azul")
primera = input(" Elija un color (r o a): ")
if primera == "r":
print(" a. Azul v. Verde")
segunda = input(" Elija otro color (a o v): ")
if segunda == "a":
print("La mezcla de Rojo y Azul produce Magenta.")
else:
print("La mezcla Rojo y Verde produce Amarillo.")
else:
print(" v. Verde r. Rojo")
segunda = input(" Elija otro color (v o r): ")
if segunda == "v":
print("La mezcla de Azul y Verde produce Cian.")
else:
print("La mezcla Azul y Rojo produce Magenta.")
print("¡Hasta la próxima!")

Este programa mezcla dos colores.

r. Rojo a. Azul

Elija un color (r o a): a

v. Verde r. Rojo
Elija otro color (v o r): v

La mezcla de Azul y Verde produce Cian.

¡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 1

print("Este programa mezcla dos colores.")


print(" r. Rojo a. Azul")
primera = input(" Elija un color (r o a): ")
if primera == "r":
print(" a. Azul v. Verde")
segunda = input(" Elija otro color (a o v): ")
if segunda == "a":
print("La mezcla de Rojo y Azul produce Magenta.")
else:
print("La mezcla Rojo y Verde produce Amarillo.")
else:
print(" v. Verde r. Rojo")
segunda = input(" Elija otro color (v o r): ")
if segunda == "v":
print("La mezcla de Azul y Verde produce Cian.")
else:
print("La mezcla Azul y Rojo produce Magenta.")
print("¡Hasta la próxima!")

Este programa mezcla dos colores.

Se ejecuta la primera instrucción del programa.


En este caso, imprime una frase.

 
Ejemplo de sentencias condicionales anidadas - Paso 2

print("Este programa mezcla dos colores.")


print(" r. Rojo a. Azul")
primera = input(" Elija un color (r o a): ")
if primera == "r":
print(" a. Azul v. Verde")
segunda = input(" Elija otro color (a o v): ")
if segunda == "a":
print("La mezcla de Rojo y Azul produce Magenta.")
else:
print("La mezcla Rojo y Verde produce Amarillo.")
else:
print(" v. Verde r. Rojo")
segunda = input(" Elija otro color (v o r): ")
if segunda == "v":
print("La mezcla de Azul y Verde produce Cian.")
else:
print("La mezcla Azul y Rojo produce Magenta.")
print("¡Hasta la próxima!")

Este programa mezcla dos colores.

r. Rojo a. Azul

A continuación, imprime otra frase.

 
Ejemplo de sentencias condicionales anidadas - Paso 2

print("Este programa mezcla dos colores.")


print(" r. Rojo a. Azul")
primera = input(" Elija un color (r o a): ")
if primera == "r":
print(" a. Azul v. Verde")
segunda = input(" Elija otro color (a o v): ")
if segunda == "a":
print("La mezcla de Rojo y Azul produce Magenta.")
else:
print("La mezcla Rojo y Verde produce Amarillo.")
else:
print(" v. Verde r. Rojo")
segunda = input(" Elija otro color (v o r): ")
if segunda == "v":
print("La mezcla de Azul y Verde produce Cian.")
else:
print("La mezcla Azul y Rojo produce Magenta.")
print("¡Hasta la próxima!")

Este programa mezcla dos colores.

r. Rojo a. Azul

Elija un color (r o a): a

A continuación, imprime la pregunta y espera a que el usuario escriba la respuesta y pulse


Intro, guardando la respuesta en la variable "primera".

 
Ejemplo de sentencias condicionales anidadas - Paso 3

print("Este programa mezcla dos colores.")


print(" r. Rojo a. Azul")
primera = input(" Elija un color (r o a): ")
if primera == "r":
print(" a. Azul v. Verde")
segunda = input(" Elija otro color (a o v): ")
if segunda == "a":
print("La mezcla de Rojo y Azul produce Magenta.")
else:
print("La mezcla Rojo y Verde produce Amarillo.")
else:
print(" v. Verde r. Rojo")
segunda = input(" Elija otro color (v o r): ")
if segunda == "v":
print("La mezcla de Azul y Verde produce Cian.")
else:
print("La mezcla Azul y Rojo produce Magenta.")
print("¡Hasta la próxima!")

Este programa mezcla dos colores.

r. Rojo a. Azul
Elija un color (r o a): a

A continuación se evalúa la condición (primera == "r").


En este caso, la condición es falsa (False), puesto que el usuario ha contestado a.

 
Ejemplo de sentencias condicionales anidadas - Paso 4

print("Este programa mezcla dos colores.")


print(" r. Rojo a. Azul")
primera = input(" Elija un color (r o a): ")
if primera == "r":
print(" a. Azul v. Verde")
segunda = input(" Elija otro color (a o v): ")
if segunda == "a":
print("La mezcla de Rojo y Azul produce Magenta.")
else:
print("La mezcla Rojo y Verde produce Amarillo.")
else:
print(" v. Verde r. Rojo")
segunda = input(" Elija otro color (v o r): ")
if segunda == "v":
print("La mezcla de Azul y Verde produce Cian.")
else:
print("La mezcla Azul y Rojo produce Magenta.")
print("¡Hasta la próxima!")

Este programa mezcla dos colores.

r. Rojo a. Azul

Elija un color (r o a): a

v. Verde r. Rojo

Como la condición es falsa (False), a continuación se ejecutan las instrucciones del


bloque else.
Escribe una frase.

 
Ejemplo de sentencias condicionales anidadas - Paso 5

print("Este programa mezcla dos colores.")


print(" r. Rojo a. Azul")
primera = input(" Elija un color (r o a): ")
if primera == "r":
print(" a. Azul v. Verde")
segunda = input(" Elija otro color (a o v): ")
if segunda == "a":
print("La mezcla de Rojo y Azul produce Magenta.")
else:
print("La mezcla Rojo y Verde produce Amarillo.")
else:
print(" v. Verde r. Rojo")
segunda = input(" Elija otro color (v o r): ")
if segunda == "v":
print("La mezcla de Azul y Verde produce Cian.")
else:
print("La mezcla Azul y Rojo produce Magenta.")
print("¡Hasta la próxima!")

Este programa mezcla dos colores.

r. Rojo a. Azul

Elija un color (r o a): a

v. Verde r. Rojo

Elija otro color (v o r): v

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

print("Este programa mezcla dos colores.")


print(" r. Rojo a. Azul")
primera = input(" Elija un color (r o a): ")
if primera == "r":
print(" a. Azul v. Verde")
segunda = input(" Elija otro color (a o v): ")
if segunda == "a":
print("La mezcla de Rojo y Azul produce Magenta.")
else:
print("La mezcla Rojo y Verde produce Amarillo.")
else:
print(" v. Verde r. Rojo")
segunda = input(" Elija otro color (v o r): ")
if segunda == "v":
print("La mezcla de Azul y Verde produce Cian.")
else:
print("La mezcla Azul y Rojo produce Magenta.")
print("¡Hasta la próxima!")

Este programa mezcla dos colores.

r. Rojo a. Azul

Elija un color (r o a): a

v. Verde r. Rojo

Elija otro color (v o r): v

A continuación se evalúa la condición (segunda == "v").


En este caso, la condición es cierta (True), puesto que el usuario ha contestado v.

 
Ejemplo de sentencias condicionales anidadas - Paso 7

print("Este programa mezcla dos colores.")


print(" r. Rojo a. Azul")
primera = input(" Elija un color (r o a): ")
if primera == "r":
print(" a. Azul v. Verde")
segunda = input(" Elija otro color (a o v): ")
if segunda == "a":
print("La mezcla de Rojo y Azul produce Magenta.")
else:
print("La mezcla Rojo y Verde produce Amarillo.")
else:
print(" v. Verde r. Rojo")
segunda = input(" Elija otro color (v o r): ")
if segunda == "v":
print("La mezcla de Azul y Verde produce Cian.")
else:
print("La mezcla Azul y Rojo produce Magenta.")
print("¡Hasta la próxima!")

Este programa mezcla dos colores.

r. Rojo a. Azul

Elija un color (r o a): a

v. Verde r. Rojo

Elija otro color (v o r): v

La mezcla de Azul y Verde produce Cian.

Como la condición es cierta (True), a continuación se ejecutan las instrucciones del


bloque if.
En este caso el bloque consta de una sola instrucción que imprime el texto "La mezcla de
Azul y Verde produce Cian.".

 
Ejemplo de sentencias condicionales anidadas - Paso 8

print("Este programa mezcla dos colores.")


print(" r. Rojo a. Azul")
primera = input(" Elija un color (r o a): ")
if primera == "r":
print(" a. Azul v. Verde")
segunda = input(" Elija otro color (a o v): ")
if segunda == "a":
print("La mezcla de Rojo y Azul produce Magenta.")
else:
print("La mezcla Rojo y Verde produce Amarillo.")
else:
print(" v. Verde r. Rojo")
segunda = input(" Elija otro color (v o r): ")
if segunda == "v":
print("La mezcla de Azul y Verde produce Cian.")
else:
print("La mezcla Azul y Rojo produce Magenta.")
print("¡Hasta la próxima!")

Este programa mezcla dos colores.

r. Rojo a. Azul

Elija un color (r o a): a

v. Verde r. Rojo

Elija otro color (v o r): v

La mezcla de Azul y Verde produce Cian.

¡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.

 
Se pueden anidar tantas sentencias condicionales como se desee.

Más de dos alternativas: if ... elif ... else ...


La construcción if ... else ... se puede extender añadiendo la instrucción elif:
La estructura de control if ... elif ... else ... permite encadenar varias condiciones. elif es una
contracción de else if. La orden en Python se escribe así:

Sintaxis de la sentencia condicional if ... elif ... else ...

La sintaxis de la construcción if ... elif ... else ... es la siguiente:

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.

Esta estructura es equivalente a la siguiente estructura de if ... else ... anidados:

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

Se pueden escribir tantos bloques elif como sean necesarios. El bloque else (que es


opcional) se ejecuta si no se cumple ninguna de las condiciones anteriores.

Diagrama de flujo de la sentencia condicional if ... elif ... else ...

El diagrama de flujo siguiente muestra la ejecución de una sentencia if ... elif ... else ...:


DIAGRAMA DE FLUJO: SENTENCIA IF ELIF ELSEHaga clic en los botones de avance
y retrocesopara ver la ejecución paso a pasoEl programa llega al if elif else.INICIOEvalúa
la condición del if.CONDICIÓN 1Si la condición del if es True,ejecuta el bloque
correspondiente ...TrueBLOQUE 1... y termina el if elif else.FINSi la condición del if es
False,evalúa la condición del elif.FalseCONDICIÓN 2Si la condición del elif es
True,ejecuta el bloque correspondiente ...TrueBLOQUE 2... y termina el if elif else.FINSi
la condición del elif es False,ejecuta el bloque correspondiente ...FalseBLOQUE 3... y
termina el if elif else.FIN
En las estructuras if ... elif ... else ... el orden en que se escriben los casos es importante y, a
menudo, se pueden simplificar las condiciones ordenando adecuadamente los casos.
Podemos distinguir dos tipos de situaciones:
1. Cuando los casos son mutuamente excluyentes.

Consideremos un programa que pide la edad y en función del valor recibido da un


mensaje diferente. Podemos distinguir, por ejemplo, tres situaciones:
o si el valor es negativo, se trata de un error
o si el valor está entre 0 y 17, se trata de un menor de edad
o si el valor es superior o igual a 18, se trata de un menor de edad

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

Consideremos un programa que pide un valor y nos dice:


o si es múltiplo de dos,
o si es múltiplo de cuatro (y de dos)
o si no es múltiplo de dos

Nota: El valor 0 se considerará múltiplo de 4 y de 2.


Los casos no son mutuamente excluyentes, puesto que los múltiplos de cuatro son
también múltiplos de dos.
o El siguiente programa no sería correcto:
o # Este programa no funciona correctamente
o numero = int(input("Escriba un número: "))
o if numero % 2 == 0:
o print(f"{numero} es múltiplo de dos")
o elif numero % 4 == 0:
o print(f"{numero} es múltiplo de cuatro y de dos")
o else:
o print(f"{numero} no es múltiplo de dos")

El error de este programa es que si numero cumple la segunda condición,


cumple también la primera. Es decir, si numero es un múltiplo de cuatro,
como también es múltiplo de dos, cumple la primera condición y el
programa ejecuta el primer bloque de instrucciones, sin llegar a comprobar
el resto de condiciones.
o Una manera de corregir ese error es añadir en la primera condición (la de if)
que numero no sea múltiplo de cuatro.
o numero = int(input("Escriba un número: "))
o if numero % 2 == 0 and numero % 4 != 0:
o print(f"{numero} es múltiplo de dos")
o elif numero % 4 == 0:
o print(f"{numero} es múltiplo de cuatro y de dos")
o else:
o print(f"{numero} no es múltiplo de dos")
o También se podría haber escrito el siguiente programa:
o numero = int(input("Escriba un número: "))
o if numero % 2 == 0 and numero % 4 != 0:
o print(f"{numero} es múltiplo de dos")
o elif numero % 2 == 0:
o print(f"{numero} es múltiplo de cuatro y de dos")
o else:
o print(f"{numero} no es múltiplo de dos")

Este programa funciona porque los múltiplos de cuatro también son


múltiplos de dos y el programa sólo evalúa la segunda condición (la de elif)
si no se ha cumplido la primera.
o Pero todavía podemos simplificar más el programa, ordenando de otra
manera los casos:
o numero = int(input("Escriba un número: "))
o if numero % 4 == 0:
o print(f"{numero} es múltiplo de cuatro y de dos")
o elif numero % 2 == 0:
o print(f"{numero} es múltiplo de dos")
o else:
o print(f"{numero} no es múltiplo de dos")

Este programa funciona correctamente ya que aunque la segunda condición


(la de elif) no distingue entre múltiplos de dos y de cuatro, si numero es un
múltiplo de cuatro, el programa no llega a evaluar la segunda condición
porque se cumple la primera (la de if).
En general, el orden que permite simplificar más las expresiones suele ser
considerar primero los casos particulares y después los casos generales.

Si las condiciones if ... elif ... cubren todas las posibilidades, se puede no escribir el
bloque else:

numero = int(input("Escriba un número: "))


if numero >= 0:
print("Ha escrito un número positivo")
elif numero < 0:
print("Ha escrito un número negativo")

Pero es más habitual sustituir el último bloque elif ... por un bloque else:


numero = int(input("Escriba un número: "))
if numero >= 0:
print("Ha escrito un número positivo")
else:
print("Ha escrito un número negativo")

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:

numero = int(input("Escriba un número: "))


if numero % 2 != 0:
print(f"{numero} es impar")
else:
print(f"{numero} es par")

se podría escribir omitiendo la comparación:

numero = int(input("Escriba un número: "))


if numero % 2:
print(f"{numero} es impar")
else:
print(f"{numero} es par")

En este programa, si el número es impar, numero % 2 da como resultado 1. Y como el valor


booleano de un número diferente de cero es True (es decir, bool(1) es True), la condición se
estaría cumpliendo.

Si la comparación es una igualdad, se puede utilizar el operador not. Por ejemplo, el


programa siguiente:

numero = int(input("Escriba un número: "))


if numero % 2 == 0:
print(f"{numero} es par")
else:
print(f"{numero} es impar")

se podría escribir omitiendo la comparación:

numero = int(input("Escriba un número: "))


if not numero % 2:
print(f"{numero} es par")
else:
print(f"{numero} es impar")

En este programa, si el número es par, numero % 2 da como resultado 0. El valor booleano


de cero es False (es decir, bool(0) es False), pero al negarse con not, la condición se estaría
cumpliendo (ya que not False es True.

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.

También podría gustarte