Estructuras de Control en Python
Estructuras de Control en Python
1
• Las condiciones son expresiones que se evaluan a True o False.
[2]: #Instrucción
#1) Crear una variable que pueda almacenar el número del usuario
#2) Implemento una condicional con if para saber si el número del usuario
#es mayor a 0, igual a 0 o menor a 0 con un mensaje
True
True
True
True
0.1.2 Anidamiento
[5]: numero_anidado = 120
#Si el número es mayor a 0, entramos al siguiente bucle
if numero_anidado > 0:
#Si el número es menor a 100, entonces será positivo
if numero_anidado < 100:
print("El número es positivo")
#Si no es menor a 100, entonces el número va a sobrepasarlo
2
else:
print("El número sobrepasa el 100, POSITIVO WOAAA")
#Si el número no es mayor a 0, entonces el número es negativo
else:
print("El número es negativo")
0.2 Switch
Para el switch nosotros utilizaremos la palabra “match” y case. Si queremos recibir cualquier valor
utilizamos el _ acompañado de un condicional como if.
match valor_switch:
#El valor dado (cualquiera del usuario) es menor a 0
case _ if valor_switch > 0:
#Mensaje de positivo
print("positivo")
#El valor dado es igual a cero
case _ if valor_switch == 0:
#Mensaje de cero
print("cero")
#El valor dado es menor a cero
case _ if valor_switch < 0:
#Mensaje de negativo
print("negativo")
Escribe un número 0
cero
Por otro lado, si tenemos una condición en específico como “L” y si ese caso sucede
entonces imprime “hola”
[10]: #valor_switch2 = "Monday" -- saldrá Lunes
#valor_switch2 = "Friday" -- saldrá Viernes
#valor_switch2 = "Saturday" -- saldrá Sábado
valor_switch2 = "Wednesday"
match valor_switch2 :
case "Friday":
print("Viernes")
case "Monday":
print("Lunes")
case "Saturday" :
print("Sábado")
case _ :
print("Día no contado")
3
Día no contado
[15]: #INSTRUCCIÓN
#Calcular el valor absoluto de un número
numero_no_absoluto = -12
#Condicional Normal
if numero_no_absoluto >= 0:
print(numero_no_absoluto)
else:
numero_no_absoluto*= -1
print(numero_no_absoluto)
#Condicional ternaria
#variable = resultado if condicional else condicional
transformacion_absoluto = numero_no_absoluto if numero_no_absoluto >= 0 else␣
↪-numero_no_absoluto
print (transformacion_absoluto)
12
12
4
else:
#Sale este mensaje
print("Ya nada")
Ya nada
[19]: #Variables
numero_uno = 1000
numero_dos = numero_uno
#Veamos el id, debería ser el mismo
print(id(numero_uno))
print(id(numero_dos))
#Como el is lo usamos para ver si los id son iguales, debe salir True
print(numero_uno is numero_dos)
#Como el == lo usamos para ver si los números son iguales, también debe ser True
print(numero_uno == numero_dos)
1232602949488
1232602949488
True
True
[20]: #Variables
a = 12
b = a
#Decimos que c será el mismo tipo de dato que a
c=type(a)
print(c)
#Decimos que d será el mismo tipo de dato que b
d=type(b)
print(d)
<class 'int'>
<class 'int'>
True
140708772623624
140708772623624
5
0.2.4 Valor Booleano
• Todos los objetos en Python tienen de manera default un valor booleano: True o False
• Cualquier número distinto de 0 o cualquier objeto no vacío tienen valor de True
• El número 0, objetos vacíos y el objeto “None” tienen por defecto False
valor_lista = [1,2,3]
Positivo es True
Negativo es False
La lista está vacía
6
[27]: #Formato
#while condicional: --- mientras se cumple la condición, el bucle se repetirá
#expresiones ---- Instrucciones para ejecutar
4
5
6
#Creamos la lista
numeros = [33,23,4,5,6,7,12,144,255,1,2]
#Creamos un contador porque necesitamos contar de uno a uno los números
contador = 0
#Creamos el índice porque necesitamos recorrer la lista
indice = 0
#Mientras que el índice sea menor a la cantidad de números que hay en la lista
while indice < len(numeros):
# Si el número que está en el índice es menor a 10 entonces:
if numeros[indice] < 10:
#Mostrará el número
print(numeros[indice])
#Aumentará el contador
contador += 1
#El indice está fuera del if porque necesita ir aumentando para cerrar el␣
↪while
indice += 1
#El contador es solo msotrar cuántos números hay con esas condiciones
print('Contador:', contador)
#Muestra cuántos números había en el total de la lista
print('Indice:', indice)
7
4
5
6
7
1
2
Contador: 6
Indice: 11
numeros_ejercicio = [1,2,3,4,5,6,7,8,22,33,44,55,66,77,88,99,1]
indice = 0
contador= 0
#Mientras que el indice sea menor a la cantidad total de números de la lista
while indice < len(numeros_ejercicio):
#Si el número dentro del índice es menor a 30
if numeros_ejercicio[indice] < 30:
#se mostrará el número
print(numeros_ejercicio[indice])
#Suma el índice para que recorra todos y no sea un infinite loop
indice+=1
1
2
3
4
5
6
7
8
22
1
Adriel
driel
riel
iel
8
el
l
Matrix
La purga
Avatar
SAO
[42]: #También se puede iterar un número pre-establecido de veces (se los conoce como␣
↪counted loops)
#Recorrera los números que estén dentro del rango del 0 al 3 (recuerda que el␣
↪último es exclusivo)
0
1
2
3
[45]: """
"range()" es útil en combinación con "len()" porque permite acceder
a los elementos de una secuencia
"""
nombre = "Jonnath"
#Recorreremos todo el string mediante el número total de letras en el nombre
for letra_nombre in range(len(nombre)):
#imprimiremos letra por letra del nombre
print(nombre[letra_nombre])
9
print("-------------------------------------")
J
o
n
n
a
t
h
-------------------------------------
J
o
n
n
a
t
h
1 2 4
3 4 7
5 6 1
para a hay 1
para b hay 2
para c hay 3
[59]: #Para iterar los pares o únicamente los valores, se deben usar métodos items
#Se imprime la clave y el valor
for key, value in [Link]():
print(f"{key} => {value}")
10
print("---------------------")
print("---------------------")
a => 1
b => 2
c => 3
---------------------
1
2
3
---------------------
1 2 3
4 5 6
calificacion_minima = 7
estudiantes_notas = [10, 4, 4, 4, 2.5, 1.9, 7 , 2.3, 7 , 10 , 2.3 , 10]
11
break
#Imprimimos fuera del bucle para ver el total
print(calificaciones)
10
4
4
4
2.5
1.9
7
Primera nota mínima de 7
7
add number 1
add number 3
add number 5
add number 7
add number 9
Numero impar: 1
Numero impar: 3
Numero impar: 5
Numero impar: 7
Numero impar: 9
12
for otro_num in range(2):
#imprimimos la expresión del indice menos el otro número
print(f"{indice} - {otro_num}")
#Si el indice es 3 y el otro número llega a 0, entonces
if indice == 3 and otro_num == 0:
#se termina el bucle
break
0 - 0
0 - 1
1 - 0
1 - 1
2 - 0
2 - 1
3 - 0
4 - 0
4 - 1
Else
• Los bucles pueden tener una secuencia else
• Esta sintaxis es única de Python
• Se ejecuta cuando el bucle termina con normalidad, es decir, cuando no termina a causa de
un break
Número encontrado
13
#Si en numeros está el número que queremos
if numeros == encontrar_num:
#el estado de encontrado cambia a True
encontrado = True
#Se termina el bucle
break
#Si encontrado es Vedadero
if encontrado:
#Mensaje
print("Dato Encontrado")
#Si no es verdadero
else:
#Mensaje
print("Dato no encontrado")
Dato Encontrado
[84]: ['A', 'l', 'e', 'j', 'a', 'n', 'd', 'r', 'o']
[89]: lista = []
#Hacemos un for para que lea por índice cada letra del string
for char in "Adriel":
#vamos a insertar cada letra dentro de la lista vacía
[Link](char)
#Imprimimos lista para ver el resultado
print(lista)
[91]: #Por cada caracter que tenga el string, añadimos un dos a la lista en vez de la␣
↪letra
[2 for _ in 'Enrique']
[91]: [2, 2, 2, 2, 2, 2, 2]
14
Sintaxis [<expression> for <item> in <iterable> if <condition>]
[97]: [0, 2, 4, 6, 8]
for y in range(9):
#si y es par, entonces
if y % 2 == 0:
#Añadimos a la lista vacía
lista_vacia.append(y)
#Imprimimos la nueva lista
print(lista_vacia)
[0, 2, 4, 6, 8]
[0, 2, 4, 6, 8]
15
#sino
else:
#la lista tendrá el número original
lista_traducida.append(x)
#vemos la nueva lista
print(lista_traducida)
[0, 1, 0, 3, 0, 5, 0, 7, 0]
[1, 2, 9, 16]
0.4.3 Anidamiento
Las listas comprendidas soportan anidamiento en sus expresiones
[120]: """
Ejemplo: bucle anidado para obtener una lista de tuplas que combinan
los elementos de dos listas dadas.
"""
lista_1 = [1,2,3]
lista_2 = [4,5]
#leer de derecha a izquierda para hacer el bucle tradicional xd
[(x, y) for x in lista_1 for y in lista_2]
[120]: [(1, 4), (1, 5), (2, 4), (2, 5), (3, 4), (3, 5)]
16
[121]: #En cristiano
lista_1 = [1,2,3]
lista_2 = [4,5]
#Creamos una lista vacía
lista_completa = []
#recorremos lista 2 y guardamos en "y"
for y in lista_2:
#recorremos lista 1 y guardamos en "x"
for x in lista_1:
#Juntamos las listas en nuestra nueva lista creada y la metemos
#por defecto, se pondrán en tuplas según su índice 1 con 1, 2 con 2 y␣
↪así
lista_completa.append((x,y))
print(lista_completa)
[(1, 4), (2, 4), (3, 4), (1, 5), (2, 5), (3, 5)]
print(d)
17
print(shopping)
<class 'tuple'>
('Banana', 1.1)
<class 'tuple'>
('Pear', 1.4)
<class 'tuple'>
('Olives', 2.4)
18
c = {x for x in range(10)} print(c) print(type(c))
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
<class 'set'>
(0, 1, 2, 3)
tupla = []
for x in range(4):
[Link](x)
tupla = tuple(tupla)
print(tupla)
print(type(tupla))
(0, 1, 2, 3)
<class 'tuple'>
0.6 Excepciones
• Las excepciones son eventos que representan situaciones excepcionales.
• Alteran el flujo de ejecución convencional.
• Python lanza excepciones automáticamente cuando se producen errores.
• El programador puede lanzar excepciones de manera explícita y también capturar excepciones
para actuar como se crea conveniente.
19
[145]: #Ejemplo: error de acceso fuera de rango.
lista = [6, 1, 0, 5]
lista[4]
print('Código tras el error') #saldrá error de que está fuera de rango
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
Cell In[145], line 3
1 #Ejemplo: error de acceso fuera de rango.
2 lista = [6, 1, 0, 5]
----> 3 lista[4]
4 print('Código tras el error')
20
• Recoger la excepción e imprimir el mensaje de error
lista = [6, 1, 0, 5]
#Creamos un try
try:
#Imprimimos el indice 4 de la lista
print(lista[4])
#Como no existe ese indice, podemos guardar el error en la variable e
except Exception as e:
#Imprimimos el error transformandolo a string
print("Error = " + str(e))
print('Reacheable Code')
Bloque finally
Código tras el bloque try
44
0.6.3 Raise
• La sentencia raise nos permite lanzar excepciones de manera explícita.
21
try:
if indice >= len(lista):
raise IndexError('Soy un error creado, el índice esta fuera de rango')
except IndexError as err:
print('Excepción de tipo IndexError capturada', err)
Excepción de tipo IndexError capturada Soy un error creado, el índice esta fuera
de rango
22
1.7 7. Producto condicionado entre dos listas
Dadas las listas a = [2, 4, 6, 8] y b = [7, 11, 15, 22], escribe un programa que multiplique
cada elemento de a mayor que 5 por cada elemento de b menor que 14 y muestre los resultados.
[164]: """
1) Escribe un programa que calcule la suma de todos los elementos de una lista␣
↪dada. La lista
"""
#LÓGICA
#1) Crear una lista de números (no tan grande para comprobar xd)
lista = [1,4,5]
#2) Crear un acumulador
23
acumulador = 0
#3) Crear un bucle for para recorrer la lista y guardarlo en una variable
for numeros in lista:
#Sumar el acumulador más los números para que a medida que vaya subiendo el␣
↪índice, se vayan sumando
acumulador+= numeros
#print(acumulador)
#4) fuera del for, imprimir para ver el resultado final, en caso de querer ver␣
↪uno por uno, se hace el print dentro del for
print(acumulador)
10
[169]: """
2) Dada una lista con elementos duplicados, escribir un programa que muestre␣
↪una nueva lista
con el mismo contenido que la primera pero sin elementos duplicados. Para este␣
↪ejercicio, no
#LÓGICA
#3) Creamos un bucle for que recorrera toda la lista duplicada y se enviará a␣
↪una variable
[1, 2, 3, 4, 5, 6]
[173]: """
Escribe un programa que construya un diccionario que contenga un número (entre␣
↪1 y n) de
24
2: 4, 3: 9, 4: 16, 5: 25}
"""
#LÓGICA: básicamente tenemos que hacer que los valores sean el cuadrado de las␣
↪claves
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100, 11:
121}
for x in range(12):
diccionario[x] = x*x
print(diccionario)
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100, 11:
121}
[193]: """
Escribe un programa que, dada una lista de palabras, compruebe si alguna␣
↪empieza por ‘a’ y
25
#3) Creamos un estado que por defecto estará en falso
encontrada = False
#4) Creamos un for para recorrer las palabras que hay en la lista y almacenar␣
↪en "palabras"
[205]: """
Dada una lista L de números positivos, escribir un programa que muestre otra␣
↪lista (ordenada)
que contenga todo índice i que cumpla la siguiente condición: L[i] es múltiplo␣
↪de 3. Por
13
ejemplo, dada la lista L = [3,5,13,12,1,9] el programa mostrará la lista␣
↪[0,3,5] dado que L[0],
"""
#LÓGICA
#1) Crear una lista llamada "L"
L = [5,4,3,1,2,6,8,7,10,9]
#2) Creamos una lista vacía
L_ordenada = []
#3) Creamos el índice
indice = 0
#4) Crear un bucle que permita recorrer la lista y guardarlo en una variable
for nueva in L:
#5) Crear un if donde diga que todos los números multiplos de 3 en el␣
↪índice se muestren
if indice % 3 == 0:
26
#6) Agregamos una variable que contenga al número que está en el indice
nueva_var= L[indice]
#7) añadimos a la nueva lista (por el momento estará desordenada)
L_ordenada.append(nueva_var)
#8) hacemos que el indice vaya aumentando y recorriendo todo
indice += 1
#9) ordenamos la lista
L_ordenada.sort()
#10) Print
print(L_ordenada)
"""
if indice % 3 == 0:
L_ordenada.append(indice)
"""
print()
[1, 5, 8, 9]
[206]: """
Dado un diccionario cuyos elementos son pares de tipo string y numérico (es␣
↪decir, las claves
son de tipo ‘str’ y los valores son de tipo ‘int’ o ‘float’), escribe un␣
↪programa que muestre
por pantalla la clave cuyo valor asociado representa el valor númerico más alto␣
↪de todo el
diccionario. Por ejemplo, para el diccionario {‘a’: 4.3, ‘b’: 1, ‘c’: 7.8, ‘d’:␣
↪-5} la respuesta
sería ‘c’, dado que 7.8 es el valor más alto de los números 4.3, 1, 7.8 y -5.
"""
#LÓGICA
#2) Crear una variable para guardar el valor más alto (empieza muy bajo)
mayor_valor = float('-inf')
#3) Crear una variable para guardar la clave asociada al mayor valor
mayor_clave = ""
27
#5) Comparar si el valor actual es mayor al valor más alto guardado
if valor > mayor_valor:
#8) Mostrar por pantalla la clave cuyo valor es el mayor del diccionario
print("La clave con el valor más alto es:", mayor_clave)
[207]: """
Dada la lista a = [2, 4, 6, 8] y la lista b = [7, 11, 15, 22], escribe un␣
↪programa que itere las
listas a y b y multiplique cada elemento de a que sea mayor que 5 por cada␣
↪elemento de b que
sea menor que 14. El programa debe mostrar los resultados por pantalla.
"""
#LÓGICA
42
66
56
88
28
[208]: """
Escribir un programa que pida un valor numérico X al usuario. Para ello podéis␣
↪hacer uso
pantalla
"""
#LÓGICA
Ingrese un número: 12
Resultado: 0.8333333333333334
[210]: """
Escribir un programa que cree un diccionario cualquiera. Posteriormente, el␣
↪programa pedirá
por pantalla el valor asociado a dicha clave. En caso de que la clave no␣
↪exista, el programa
29
usuario.
"""
#LÓGICA
[ ]: """
Escribe una list comprehension que construya una lista con los números enteros␣
↪positivos de
una lista de números dada. La lista original puede incluir números de tipo␣
↪float, los cuales
[ ]:
[213]: """
Escribe una set comprehension que, dada una palabra, construya un conjunto que␣
↪contenga
30
"""
#LÓGICA
[215]: """
Escribe una list comprehension que construya una lista con todos los números␣
↪del 0 al 50 que
contengan el dígito 3. El resultado será: [3, 13, 23, 30, 31, 32, 33, 34, 35,␣
↪36, 37, 38, 39, 43].
"""
#LÓGICA
[3, 13, 23, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 43]
[216]: """
Escribe una dictionary comprehension que construya un diccionario que incluya␣
↪los tamaños
de cada palabra en una frase dada. Ejemplo: el resultado para la frase “Soy un␣
↪ser humano”
#LÓGICA
31
#3) Mostrar el diccionario
print(diccionario)
[217]: """
Escribe una list comprehension que construya una lista que incluya todos los␣
↪números del 1
"""
#LÓGICA
1.15 Bibliografía
1. Christian. (2021, junio 4). Doble loop en una list comprehension? (lista de diccionarios).
Stack Overflow en español. Recuperado de [Link]
459575/doble-loop-en-una-list-comprehension-lista-de-diccionarios
2. Lleims. (2018, octubre 7). list comprehensions. Recuperado de [Link]
com/questions/202612/list-comprehensions
3. Dictionary comprehension (consulta de publicaciones etiquetadas). (2025). Stack
Overflow. Recuperado de [Link]
dictionary-comprehension
4. Fellman, N. (s. f.). How to handle exceptions in a list comprehensions. Re-
cuperado de [Link]
comprehensions
32
2 Github
[ ]:
33