Estructuras de Control de Flujos
Contents
Estructuras de Control de Flujos#
De no ser por las estructuras de control, el código en cualquier lenguaje de programación sería ejecutado secuencialmente hasta terminar. Un código, no deja de ser un conjunto de instrucciones que son ejecutadas unas tras otra. Gracias a las estructuras de control, podemos cambiar el flujo de ejecución de un programa, haciendo que ciertos bloques de código se ejecuten si y solo si se dan unas condiciones particulares.
Estructuras de Control de Flujos#
Uso del if#
Un ejemplo sería si tenemos dos valores a y b que queremos dividir. Antes de entrar en el bloque de código que divide a/b, sería importante verificar que b es distinto de cero, ya que la división por cero no está definida. Es aquí donde entran los condicionales if.
a = 4
b = 2
if b != 0:
print(a/b)
2.0
Hacemos un paréntesis para revisar la “Lógica Proposicional”
if False:
print("Se ejecutó el código")
if False or False:
print("Se ejecutó el código")
La condición que se tiene que cumplir para que el bloque de código se ejecute, en nuestro caso b!=0.
El bloque de código que se ejecutará si se cumple la condición anterior.
Es muy importante tener en cuenta que la sentencia if debe ir terminada por ":" y el bloque de código a ejecutar debe estar identado. Nótese que el bloque de código puede también contener más de una línea, es decir puede contener más de una instrucción.
a = 2021
b = 2015
if a != b:
print("GADEST") # Tener en cuenta el indentado.
print("Hola a todos")
print( "GADEST lleva {0} años de fundado".format(a-b))
# Se puede tener más de 1 intrucción.
GADEST
Hola a todos
GADEST lleva 6 años de fundado
if True: print("Hola Mundo")
Hola Mundo
if 10 <= 5:
print("10 es mayor que 5")
print("El programa terminó")
if 10 == 10:
print("10 es igual a 10")
print("El programa terminó")
10 es igual a 10
El programa terminó
if 7 != 6:
print("7 es diferente de 6")
print("El programa terminó")
7 es diferente de 6
El programa terminó
Uso de else y elif#
Es posible que no solo queramos hacer algo si una determinada condición se cumple, sino que además queramos hacer algo de lo contrario. Es aquí donde entra la cláusula else. La parte del if se comporta de la manera que ya hemos explicado, con la diferencia que si esa condición no se cumple, se ejecutará el código presente dentro del else. Nótese que ambos bloque de código son excluyentes, se entra o en uno o en otro, pero nunca se ejecutarán los dos.
x = 6
if x == 5:
print("Se ejecuta el if")
print('x es igual a 5')
print('{0} es igual a 5'.format(x))
print('El programa termino')
else:
print("Se ejecuta el else")
print('x es diferente de 5')
print('{0} es diferente de 5'.format(x))
print('El programa termino')
Se ejecuta el else
x es diferente de 5
6 es diferente de 5
El programa termino
a = 5.1
if type (a) == int :
if a > 3 and a < 5: # True and False = False
print('a es mayor a 3 y menor a 5')
else:
print('a no está en el rango de 3 a 5')
else:
print("a no es un valor entero")
a no es un valor entero
a = 2
if a > 3 or a < 0: # True or False = True
print('{0} es mayor a 3 o es menor a cero'.format(a))
else:
print("No se cumple la condición")
No se cumple la condición
Con la cláusula elif podemos ejecutar tantos bloques de código distintos como queramos según la condición. Traducido al lenguaje natural, sería algo así como decir: si es igual a 5 haz esto, si es igual a 6 haz lo otro, si es igual a 7 haz lo otro.
Se puede usar también de manera conjunta todo, el if con el elif y un else al final. Es muy importante notar que if y else solamente puede haber uno, mientras que elif puede haber varios.
num = 5
if num == 3:
print('Tres')
elif num == 4:
print('Cuatro')
elif num == 5:
print('Cinco')
elif num == 6:
print('Seis')
else:
print('Numero no es igual a 3, 4, 5 o 6')
Cinco
m = -1
if m < 1:
print("El número {0} es menor que 1".format(m))
elif m < 5:
print("El número {0} es menor que 5 y mayor o igual a 1".format(m))
elif m < 10:
print("El número {0} es menor que 10 y mayor o igual a 5".format(m))
else:
print("El número {0} es mayor o igual a 10".format(m))
El número -1 es menor que 1
a = 11
if a == 10:
print(a)
elif a == 11:
print(a)
elif a == 11:
print(a)
elif a == 11:
print(a)
else:
print("Fin del programa")
11
a = 11
if a == 10:
print(a)
if a == 11:
print(a)
if a == 11:
print(a)
if a == 11:
print(a)
else:
print("Fin del programa")
11
11
11
Uso de bucles for#
El for es un tipo de bucle, parecido al while pero con ciertas diferencias. La principal diferencia es que el número de iteraciones de un for esta definido de antemano, mientras que en un while no. La diferencia principal con respecto al while es en la condición. Mientras que en el while la condición era evaluada en cada iteración para decidir si volver a ejecutar o no el código, en el for no existe tal condición, sino un iterable que define las veces que se ejecutará el código. En el siguiente ejemplo vemos un bucle for que se ejecuta 5 veces, y donde la i incrementa su valor “automáticamente” en 1 en cada iteración.
print(list(range(5)))
[0, 1, 2, 3, 4]
for i in range(5):
print(i)
0
1
2
3
4
print(list(range(5, 11)))
[5, 6, 7, 8, 9, 10]
for i in range(5, 11):
print(i)
5
6
7
8
9
10
En Python se puede iterar prácticamente todo, como por ejemplo una cadena. En el siguiente ejemplo vemos como la i va tomando los valores de cada letra.
print(list(range(5, 11, 2)))
[5, 7, 9]
for i in range(5, 11, 2):
print(i)
print("Estamos dentro del for")
5
Estamos dentro del for
7
Estamos dentro del for
9
Estamos dentro del for
for i in "GADEST":
print(i)
G
A
D
E
S
T
for i in [1, 2, 3]:
print(i)
# for i in (1, 2, 3):
# print(i)
# for key in {'one':1, 'two':2, 'three':3}:
# print(key)
# for i in "123456abcdefg":
# print(i)
# for line in open("archivoPrueba.txt"):
# print(line, end="")
1
2
3
Forma contraida del “for”.
a = [1, 2, 3, 4, 5]
b = [i**2 for i in a]
print(b)
[1, 4, 9, 16, 25]
Es posible anidar los for, es decir, colocar un "for" uno dentro de otro "for". Esto puede ser muy útil si queremos iterar algún objeto que en cada elemento, tiene a su vez otra clase iterable. Podemos tener por ejemplo, una lista de listas, una especie de matriz.
lista = [[1, 2, 3],[4, 5, 6],[7, 8, 9]]
# for i in lista:
# for j in i:
# print(j)
# print('\n')
# for i in lista [::-1]:
# for j in i [::-1]:
# print(j)
cont = 1
for i in range(5):
print(cont)
cont += 1
1
2
3
4
5
Hacemos un paréntesis para hablar de la función enumerate
lista = ["Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sábado", "Domingo"]
print(enumerate(lista))
print(type (enumerate(lista)))
print(list(enumerate(lista)))
<enumerate object at 0x000001541CA142C0>
<class 'enumerate'>
[(0, 'Lunes'), (1, 'Martes'), (2, 'Miercoles'), (3, 'Jueves'), (4, 'Viernes'), (5, 'Sábado'), (6, 'Domingo')]
Continuamos con las Estructuras de Control de Flujos
lista = ["Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sábado", "Domingo"]
for contador, elemento in enumerate(lista):
print(contador)
print(elemento)
0
Lunes
1
Martes
2
Miercoles
3
Jueves
4
Viernes
5
Sábado
6
Domingo
Uso de bucles while y while not#
El uso del while nos permite ejecutar una sección de código repetidas veces, de ahí su nombre. El código se ejecutará mientras una condición determinada se cumpla. Cuando se deje de cumplir, se saldrá del bucle y se continuará la ejecución normal. Llamaremos iteración a una ejecución completa del bloque de código.
Cabe destacar el bucle while forma parte de las iteraciones no definidad.
i = 0
while i <= 10:
print(i)
i += 1
0
1
2
3
4
5
6
7
8
9
10
x = ["Uno", "Dos", "Tres"]
while x:
x.pop(0)
print(x)
['Dos', 'Tres']
['Tres']
[]
data = 5
while not data == 0:
print (data)
data = data - 1
5
4
3
2
1
lista = [1, 2, 3]
while 7 not in lista:
lista.append(len(lista) + 1)
print(lista)
[1, 2, 3, 4]
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 7]
i = 1
while True:
i += 1
print(i)
if i == 50:
break
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50