2/10/2018 Controlando el flujo | Curso de Python | Hektor Profe
Controlando el ujo
Presentación
Si un programa sólo ejecutara instrucciones planas unas tras otras no servirían
de mucho. Por suerte ahí es donde aparecen las sentencias de control.
Condiciones
Condicionar permite dividir el ujo de un programa en diferentes caminos.
Sentencia If (si)
El if se ejecuta siempre que la expresión que comprueba devuelva True:
Código Resultado
[Link] 1/13
2/10/2018 Controlando el flujo | Curso de Python | Hektor Profe
if True: # equivale a if not False
print("Se cumple la condición")
print("También se muestre este print")
Podemos encadenar diferentes If:
Código Resultado
a = 5
if a == 2:
print("a vale 2")
if a == 5:
print("a vale 5")
O también anidar If dentro de If:
Código Resultado
a = 5
b = 10
if a == 5:
print("a vale",a)
if b == 10:
print("y b vale",b)
Como condición podemos evaluar múltiples expresiones, siempre que éstas
devuelvan True o False:
Código Resultado
if a==5 and b == 10:
print("a vale 5 y b vale 10")
Sentencia Else (sino)
Se encadena a un If para comprobar el caso contrario (en el que no se cumple la
condición):
[Link] 2/13
2/10/2018 Controlando el flujo | Curso de Python | Hektor Profe
Código Resultado
n = 11
if n % 2 == 0:
print(n,"es un número par")
else:
print(n,"es un número impar")
Sentencia Elif (sino si)
Se encadena a un if u otro elif para comprobar múltiples condiciones, siempre
que las anteriores no se ejecuten:
Código Resultado
comando = "OTRA COSA"
if comando == "ENTRAR":
print("Bienvenido al sistema")
elif comando == "SALUDAR":
print("Hola, espero que te lo estés pasando bien
aprendiendo Python")
elif comando == "SALIR":
print("Saliendo del sistema...")
else:
print("Este comando no se reconoce")
Código Resultado
nota = float(input("Introduce una nota: "))
if nota >= 9:
print("Sobresaliente")
elif nota >= 7:
print("Notable")
elif nota >= 6:
print("Bien")
elif nota >= 5:
print("Suficiente")
else:
print("Insuficiente")
[Link] 3/13
2/10/2018 Controlando el flujo | Curso de Python | Hektor Profe
Es posible simular el funcionamiento de elif con if utilizando expresiones
condicionales:
Código Resultado
nota = float(input("Introduce una nota: "))
if nota >= 9:
print("Sobresaliente")
if nota >= 7 and nota < 9:
print("Notable")
if nota >= 6 and nota < 7:
print("Bien")
if nota >= 5 and nota < 6:
print("Suficiente")
if nota < 5:
print("Insuficiente")
Instrucción Pass
Sirve para nalizar un bloque, se puede utilizar en un bloque vacío:
if True:
pass
Iteraciones
Iterar signi ca realizar una acción varias veces. Cada vez que se repite se
denomina iteración.
Sentencia While (mientras)
Se basa en repetir un bloque a partir de evaluar una condición lógica, siempre
que ésta sea True. Queda en las manos del programador decidir el momento en
que la condición cambie a False para hacer que el While nalice.
[Link] 4/13
2/10/2018 Controlando el flujo | Curso de Python | Hektor Profe
Código Resultado
c = 0
while c <= 5:
c+=1
print("c vale", c)
Uso de Else en While
Se encadena al While para ejecutar un bloque de código una vez la condición ya
no devuelve True (normalmente al nal):
Código Resultado
c = 0
while c <= 5:
c+=1
print("c vale", c)
else:
print("Se ha completado toda la iteración y c vale", c)
Instrucción Break
Sirve para "romper" la ejecución del While en cualquier momento. No se
ejecutará el Else, ya que éste sólo se llama al nalizar la iteración.:
Código Resultado
c = 0
while c <= 5:
c+=1
if (c==4):
print("Rompemos el bucle cuando c vale", c)
break
print("c vale",c)
else:
print("Se ha completado toda la iteración y c vale", c)
Instrucción Continue
[Link] 5/13
2/10/2018 Controlando el flujo | Curso de Python | Hektor Profe
Sirve para "saltarse" la iteración actual sin romper el bucle.
Código Resultado
c = 0
while c <= 5:
c+=1
if c==3 or c==4:
# print("Continuamos con la siguiente iteración", c)
continue
print("c vale",c)
else:
print("Se ha completado toda la iteración y c vale", c)
Ejemplo menú interactivo
Código Resultado
print("Bienvenido al menú interactivo")
while(True):
print("""¿Qué quieres hacer? Escribe una opción
1) Saludar
2) Sumar dos números
3) Salir""")
opcion = input()
if opcion == '1':
print("Hola, espero que te lo estés pasando bien")
elif opcion == '2':
n1 = float(input("Introduce el primer número: "))
n2 = float(input("Introduce el segundo número: "))
print("El resultado de la suma es: ",n1+n2)
elif opcion =='3':
print("¡Hasta luego! Ha sido un placer ayudarte")
break
else:
print("Comando desconocido, vuelve a intentarlo")
Sentencia For (para)
For con listas
[Link] 6/13
2/10/2018 Controlando el flujo | Curso de Python | Hektor Profe
Para ilustrar la utilidad de esta sentencia vamos a empezar mostrando como
recorrer los elementos de una lista utilizando While:
Código Resultado
numeros = [1,2,3,4,5,6,7,8,9,10]
indice = 0
while indice < len(numeros):
print(numeros[indice])
indice+=1
Lo mismo utilizando el For:
Código Resultado
for numero in numeros: # Para [variable] en [lista]
print(numero)
¿Mucho más fácil no?
Para asignar un nuevo valor a los elementos de una lista mientras la recorremos,
podríamos intentar asignar al número el nuevo valor:
Código Resultado
for numero in numeros:
numero *= 10
numeros
Sin embargo, esto no funciona. La forma correcta de hacerlo es haciendo
referencia al índice de la lista en lugar de la variable:
Código Resultado
indice = 0
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[Link] 7/13
2/10/2018 Controlando el flujo | Curso de Python | Hektor Profe
for numero in numeros:
numeros[indice] *= 10
indice+=1
numeros
Podemos utilizar la función enumerate() para conseguir el índice y el valor en
cada iteración fácilmente:
Código Resultado
numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for indice,numero in enumerate(numeros):
numeros[indice] *= 10
numeros
For con cadenas
Funciona exactamente igual que con las listas, pero con caracteres en lugar de
elementos:
Código Resultado
cadena = "Hola amigos"
for caracter in cadena:
print(caracter)
Pero debemos recordar que las cadenas son inmutables:
Código Resultado
for i, c in enumerate(cadena):
cadena[i] = "*"
Sin embargo siempre podemos generar una nueva cadena:
[Link] 8/13
2/10/2018 Controlando el flujo | Curso de Python | Hektor Profe
Código Resultado
cadena = "Hola amigos"
cadena2 = ""
for caracter in cadena:
cadena2 += caracter * 2
La función range()
Sirve para generar una lista de números que podemos recorrer fácilmente, pero
no ocupa memoria porque se interpreta sobre la marcha:
Código Resultado
for i in range(10):
print(i)
Esta función devuelve un generador, una estructura manejada en tiempo de
ejecución:
Código Resultado
range(10)
Si queremos conseguir la lista literal podemos transformar el range a una lista:
Código Resultado
list(range(10))
Post análisis
Estoy seguro que en este momento ya sabes desmenuzar línea a línea cada
instrucción de nuestro ejemplo de cabecera y entenderlo.
[Link] 9/13
2/10/2018 Controlando el flujo | Curso de Python | Hektor Profe
n = 0
while n < 10:
if (n % 2) == 0:
print(n,'es un número par')
else:
print(n,'es un número impar')
n = n + 1
Ejercicios optativos
1) Realiza un programa que lea dos números por teclado y permita elegir entre 3
opciones en un menú:
Mostrar una suma de los dos números
Mostrar una resta de los dos números (el primero menos el segundo)
Mostrar una multiplicación de los dos números
En caso de no introducir una opción válida, el programa informará de que no
es correcta.
Ejercicio Solución Resultado
# Espacio reservado para no mostrar la solución
2) Realiza un programa que lea un número impar por teclado. Si el usuario no
introduce un número impar, debe repetise el proceso hasta que lo introduzca
correctamente.
Ejercicio Solución Resultado
# Espacio reservado para no mostrar la solución
3) Realiza un programa que sume todos los números enteros pares desde el 0
hasta el 100.
[Link] 10/13
2/10/2018 Controlando el flujo | Curso de Python | Hektor Profe
Sugerencia
Puedes utilizar la funciones sum() y range() para hacerlo más fácil.
El tercer parámetro en la función range(inicio, n, salto) indica un salto de números, pruébalo.
Ejercicio Solución Resultado
# Espacio reservado para no mostrar la solución
4) Realiza un programa que pida al usuario cuantos números quiere introducir.
Luego lee todos los números y realiza una media aritmética.
Ejercicio Solución Resultado
# Espacio reservado para no mostrar la solución
5) Realiza un programa que pida al usuario un número entero del 0 al 9, y que
mientras el número no sea correcto se repita el proceso. Luego debe comprobar
si el número se encuentra en la lista de números y noti carlo:
Concepto útil
La sintaxis [valor] in [lista] permite comprobar si un valor se encuentra en una lista (devuelve
True o False).
Ejercicio Solución Resultado
numeros = [1, 3, 6, 9]
# Completa el ejercicio aquí
6) Utilizando la función range() y la conversión a listas genera las siguientes
listas dinámicamente:
[Link] 11/13
2/10/2018 Controlando el flujo | Curso de Python | Hektor Profe
Todos los números del 0 al 10 [0, 1, 2, ..., 10]
Todos los números del -10 al 0 [-10, -9, -8, ..., 0]
Todos los números pares del 0 al 20 [0, 2, 4, ..., 20]
Todos los números impares entre -20 y 0 [-19, -17, -15, ..., -1]
Todos los números múltiples de 5 del 0 al 50 [0, 5, 10, ..., 50]
Concepto útil
Se pueden generar saltos en el range() estableciendo su tercer parámetro range(inicio, n, salto),
experimenta.
Ejercicio Solución Resultado
# Espacio reservado para no mostrar la solución
7) Dadas dos listas, debes generar una tercera con todos los elementos que se
repitan en ellas, pero no debe repetirse ningún elemento en la nueva lista:
Ejercicio Solución Resultado
lista_1 = ["h",'o','l','a',' ', 'm','u','n','d','o']
lista_2 = ["h",'o','l','a',' ', 'l','u','n','a']
# Completa el ejercicio aquí
Última edición: 22 de Septiembre de 2018
[Link] 12/13
2/10/2018 Controlando el flujo | Curso de Python | Hektor Profe
[Link] 13/13