En este apartado vamos a conocer las diferentes estructuras de control que nos van a permitir dirigir el flujo de nuestros programas.
El flujo de un programa es el orden en el que se van ejecutando las instrucciones de este. Estas instrucciones se ejecutan de arriba abajo, y de izquierda a derecha, según el orden en que aparezcan las mismas.
Sin embargo, existen ocasiones en las que necesitemos romper este flujo secuencial. Estas pueden ser de muy diverso tipo, puede que necesitemos tomar una decisión entre una o varias opciones posibles, o a lo mejor necesitamos realizar algunas instrucciones varias veces. Por tanto, necesitamos instrucciones que nos permitan interrumpir el flujo secuencial del programa, y pasar a ejecutar otros bloques de código.
Podemos identificar dos tipos de estructuras de control:
Condicionales: Nos permiten determinar el flujo que sigue el programa en función del resultado de la evaluación de ciertas condiciones.
Iterativas: Para realizar un conjunto de instrucciones de forma repetitiva.
Estructuras condicionales
Las estructuras condicionales nos permiten evaluar condiciones en Python y modificar el flujo del programa, en función del resultado de la evaluación de la condición.
Sentencia if
La sentencia if, evalúa una condición y ejecuta un bloque de instrucciones en el caso de que la condición sea verdadera.

Su estructura general es la siguiente:
if condición:
instrucciones si se cumple la condición
numero=5
if numero>0:
print(f"{numero} es mayor que cero")
Para evaluar estas condiciones, disponemos de los siguientes operadores:
| Operador | Significado |
| == | Igualdad |
| != | Desigualdad |
| > | Mayor que |
| < | Menos que |
| >= | Mayor o igual que |
| <= | Menor o igual que |
| in | Está en la lista |
En el siguiente código puede apreciarse el uso de algunos de estos operadores:
lista=[1,3,5,7,9,11]
numero=5
if lista[0]==1:
print("el primer elemento es igual a 1")
if lista[1]>0:
print(f"{lista[1]} es mayor que cero")
if lista[2]!=lista[1]:
print("los elementos segundo y tercero son distintos")
if numero in lista:
print(f"el numero {numero} esta en la lista")
otro_numero=4
if otro_numero not in lista:
print("el otro numero no está en la lista")
Este código arroja el siguiente resultado:
el primer elemento es igual a 1
3 es mayor que cero
los elementos segundo y tercero son distintos
el numero 5 esta en la lista
el otro numero no está en la lista
¡¡OJO!! -> No confundir el operador de asignación: “=” , con el de igualdad: “==”. El primero es un único signo: “=” y se emplea para asignar un valor a una variable. El segundo son dos signos: “=” seguidos y se emplea para la comparación de igual, arrojando un valor de verdadero cuando ambos operandos sean iguales.
Combinando condiciones
La comprobación a realizar puede combinar varias condiciones, empleando los operadores lógicos: and, or y not
lista=[1,3,5,7,9,11]
numero=5
if lista[0]==1 and numero==5:
print("se cumplen ambas condiciones")
if lista[1]>0 or numero<4:
print("Se cumple al menos una de las dos condiciones")
Al ejecutar el programa obtenemos el resultado:
se cumplen ambas condiciones
Se cumple al menos una de las dos condiciones
Instrucción else
La instrucción “else” provee un camino adicional en el caso de que la condición se evalué como falsa. Es decir, si es falsa, pasamos a ejecutar otro bloque de instrucciones.

Un ejemplo de utilización de esta estructura sería:
numero=3
if numero>5:
print(f"{numero} es mayor que cinco")
else:
print(f"{numero} NO es mayor que cinco")
Cuya ejecución arroja el siguiente resultado
3 NO es mayor que cinco
También podemos emplearlo para saber si una lista está vacía. Si empleamos el nombre de una lista como condición, Python devolverá falso si no tiene elementos.
numeros=[]
if numeros:
print("hay elementos en la lista")
else:
print ("la lista está vacia")
Instrucción elif
En ocasiones, cuando no se cumpla la condición, querremos comprobar otra cosa y así, varias veces seguidas, concatenando varias comprobaciones. En estos casos empleamos la instrucción elif, que puede verse como una conjunción de las instrucciones else y if.
La sintaxis de la estructura sería:
if condición 1:
instrucciones si se cumple la condición 1
elif condición 2:
instrucciones si se cumple la condición 2 y no la 1
elif condición N:
instrucciones si se cumple la condición N y no todas las anteriores
else:
rama por defecto: instrucciones si no se cumplen ninguna de las condiciones
Aquí tienes un ejemplo de código:
dia="martes"
if dia=="lunes":
print("Que la fuerza te acompañe")
elif dia=="jueves":
print("ya queda menos")
elif dia=="viernes":
print("no queda nada")
elif dia=="sabado" or dia=="domingo":
print("Buen finde")
else:
print("Buenos dias")
El resultado de ejecución sería:
Buenos dias
Estructuras iterativas
Las estructuras iterativas permiten ejecutar de forma repetida un conjunto de operaciones un número de veces determinado. Fundamentalmente vamos a trabajar con dos estructuras iterativas: for y while
Bucle for
El bucle for lo emplearemos para recorrer una estructura iterable, como puede lista, tupla, diccionario o rango de números, y para cada elemento se ejecuta un bloque de código.
La sintaxis es:
for elemento in iterable:
operaciones para elemento realizadas en cada iteración
Ejemplo de código:
lista=[1,3,5,7,9,11]
for item in lista:
print(item)
Cuyo resultado es:
1
3
5
7
9
11
La función range
Genera secuencias de valores desde un valor inicial hasta uno final, indicando el incremento de un valor con respecto al anterior.
La sintaxis es:
Range(valor inicial, valor final, incremento)
Si no se indica incremento se toma por defecto el valor 1. Y el valor final no está incluido en el rango.
Por ejemplo: range(1,9,2) , generará la secuencia de números: 1, 3, 5 y 7
for item in range(1,9,2):
print(item)
Y si utilizamos un único argumento, toma como valor inicial 0 y como incremento 1.
for item in range(3):
print(item)
El resultado sería:
0
1
2
Para las estructuras iterativas, como las listas, podemos emplear los dos puntos para indicar un rango a recorrer de dicha lista. Por ejemplo, si queremos recorrer los tres primeros elementos de la lista, utilizaríamos: [:3] (recuerda que los índices empiezan en cero y que el extremo superior no está incluido.
lista=[1,3,5,7,9,11]
for num in lista[:3]:
print(num)
Y el resultado es:
1
3
Bucles anidados
Podemos incluir bucles dentro de bucles. El ejemplo siguiente imprime las tablas de multiplicar.
for x in range(1,10):
print(f"TABLA DE MULTIPLICAR DEL {x}")
for y in range(1,10):
print(f"{x} x {y} = {x*y}")
Cuya ejecución da como resultado:
TABLA DE MULTIPLICAR DEL 1
1 x 1 = 1
1 x 2 = 2
…….
Iterando con dos variables
En ocasiones nos va a resultar muy útil ser capaz de iterar con dos variables, es decir, recuperar pares de valores. El ejemplo clásico de este uso sería iterar los elementos de un diccionario (nos los devuelve la función ítems( ) ), donde recobraríamos la clave y el valor a la vez.
diccionario={"nombre":"Elena","apellidos":"García Hernández",
"edad":27,"telefono":613454312}
for c , v in diccionario.items():
print(f"clave: {c} -> valor {v}")
Que da como resultado:
clave: nombre -> valor Elena
clave: apellidos -> valor García Hernández
clave: edad -> valor 27
clave: telefono -> valor 613454312
Bucle while
La instrucción while también nos permite construir estructuras iterativas. En este caso, se ejecutan las instrucciones del bloque mientras se cumpla la condición del while.
La sintaxis de esta instrucción es:
while condición:
operaciones mientras se cumple la condición
Ejemplo bucle while:
num = 5
while num>0:
print("numero",num)
num=num-1
Que arroja el resultado:
numero 5
numero 4
numero 3
numero 2
numero 1
Terminando el bucle
Es fundamental definir correctamente la condición del bucle while. Esta debe de dejar de cumplirse en algún momento de la ejecución del programa, de otra forma estaríamos corriendo un bucle infinito y el programa no terminaría nunca.
Ejemplo de bucle infinito:
num = 5
while num>0:
print("numero",num)
Lo más inmediato es colocar en el bucle alguna instrucción que modifique la condición del bucle, asegurándonos de que se llegue a una situación en la que la condición será falsa y se saldrá del bucle.
También podemos dar la opción al usuario de que termine el bucle. Para ello será necesario que este introduzca un dato durante cada interacción. Cuando este dato coincida con el mensaje para salir, terminaríamos el bucle.
Ejemplo: siendo el mensaje para salir igual a “salir”
nombre=""
while nombre!="salir":
nombre=input("introduce un nombre\n")
if (nombre!="salir"):
print("Hola ",nombre)
También se puede emplear una variable booleana para terminar un bucle, lo que se denomina una bandera:
terminar=False
while not terminar:
nombre=input("introduce un nombre\n")
if (nombre=="salir"):
terminar=True
else:
print("Hola ",nombre)
Y también podríamos introducir la bandera en el sentido contrario, haciendo que mientras fuera verdadera el bucle estuviera funcionando:
trabajando=True
while trabajando:
nombre=input("introduce un nombre\n")
if (nombre=="salir"):
trabajando=False
else:
print("Hola ",nombre)
Sentencias continue y break
Dentro de una estructura iterativa existen algunas sentencias útiles para su manejo:
- continue: pasa a la siguiente iteración del bucle sin completar las instrucciones restantes del bloque de código del bucle
print("Saludos por la mañana")
nombres=["Pepe","Maria","Ana","Lucrecia","Juan"]
print("excluye a alguien de los saludos")
excluido=input("introduce el nombre de la persona a quien no vas a saludar\n")
for persona in nombres:
if persona==excluido:
continue
else:
print("Buenos días, ",persona)
- break: termina el bucle sin completar las iteraciones restantes
while True:
nombre=input("introduce un nombre\n")
if (nombre=="salir"):
break
else:
print("Hola ",nombre)
NOTA:
Este post es parte de la colección “Python”. Puedes ver el índice de esta colección aquí.