26 de abril de 2019
Las funciones de control de flujo nos permiten definir las tareas o acciones a realizar o no realizar durante la ejecución de las instrucciones de un programa.
Con las funciones de control de flujo se puede:
Las funciones de control más utlizadas en python son:
if (si) permite que al cumplirse o no cumplirse una condición, ejecutar una acción o tarea
Para crear una función de control de flujo con if usaremos el siguiente código:
if condicion_a_evaluar: tarea_a_realizar
Ejemplo:
numero_a_evaluar = 5 # definimos la variable numero_a_evaluar # le asignamos el valor 5 # creamos nuestra función de control de flujo if # la condición a evaluar es si numero_a_evaluar es mayor a 2 if numero_a_evaluar > 2: print("el número es mayor a 2") # muestra en pantall la leyenda: "el número es mayor a 2"
Un dolor de cabeza al programar en python, sobre todo para los que vienen de otros lenguajes de programación, son los espacios, sangrías, tabulaciones y saltos de línea para definir el contenido de las funciones y funciones de control de flujo.
Python no utiliza { } para definir el contenido de las funciones y funciones de control de flujo. Python utiliza sangrías / tabulaciones / espacios y saltos de línea.
Una sangría / tabulación / espacio o salto de línea mal colocados implicaría que nuestro código no haga nada, produzca un error u ofrezca un resultado completamente diferente.
Tómese como referencia el siguiente ejemplo:
numero_a_evaluar = 5 # definimos la variable numero_a_evaluar # le asignamos el valor 5 # creamos nuestra función de control de flujo if # la condición a evaluar es si numero_a_evaluar es mayor a 2 if numero_a_evaluar > 2: print("el número es mayor a 2") # muestra en pantall la leyenda: "el número es mayor a 2"
Y su resultado:
¿Qué fué lo que pasó?
¿Por qué marco error?
¿Por qué no hizo evaluó la condición?
Cuál es la diferencia entre este código:
numero_a_evaluar = 5 # definimos la variable numero_a_evaluar # le asignamos el valor 5 # creamos nuestra función de control de flujo if # la condición a evaluar es si numero_a_evaluar es mayor a 2 if numero_a_evaluar > 2: print("el número es mayor a 2") # muestra en pantall la leyenda: "el número es mayor a 2"
Y este otro código:
numero_a_evaluar = 5 # definimos la variable numero_a_evaluar # le asignamos el valor 5 # creamos nuestra función de control de flujo if # la condición a evaluar es si numero_a_evaluar es mayor a 2 if numero_a_evaluar > 2: print("el número es mayor a 2") # muestra en pantall la leyenda: "el número es mayor a 2"
La diferencia es la sangría / tabulación / espacio o salto de línea que python utiliza para definir el contenido de las funciones y funciones de control de flujo.
Una sangría / tabulación / espacio o salto de línea mal colocados implicaría que nuestro código no haga nada, produzca un error u ofrezca un resultado completamente diferente.
Con if se puede analizar el valor de variables, analizar el resultado de operaciones aritméticas, analizar el contenido de strings, analizar el resultado de operaciones booleanas, analizar el contenido de lists, analizar el contenido de dictionaries, analizar el contenido de sets,etc. y realizar tareas específicas acorde al resultado obtenido.
Ahora evaluaremos el resultado de una operación aritmética, ejemplo:
numero_a_evaluar = 4 # definimos la variable numero_a_evaluar # le asignamos el valor 4 # creamos nuestra función de control de flujo if # con ella evaluaremos el resultado de una operación aritmética # la condición a evaluar es si numero_a_evaluar es un número par # para ello utilizaremos la operación aritmética % modulus # si el resultado es 0, el número es par if numero_a_evaluar % 2 == 0: print("el número es par") # muestra en pantalla la leyenda: "el número es par"
Y su resultado:
Ahora evaluaremos la longitud de un string, ejemplo:
nombre = "Cuauhtémoc Blanco Pardo" # definimos la variable nombre # le asignamos el valor Cuauhtémoc Blanco Pardo # la variable almacena una string # creamos nuestra función de control de flujo if # con ella evaluaremos el tamaño del string # la condición a evaluar es si el string tiene más de 2 caracteres # para ello utilizaremos la función len() # si el resultado es mayor a 2 # el string tiene más de dos caracteres if len(nombre) > 2: print("el nombre tiene mas de dos caracteres") # muestra en pantalla la leyenda: # "el nombre tiene mas de dos caracteres"
Y su resultado:
Ahora evaluaremos la existencia de un caracter en un string, ejemplo:
caracter_a_buscar = "@" # definimos la variable caracter_a_buscar # le asignamos el valor @ # la variable almacena un string correo_electronico = "ejemplo@alaingarcia.net" # definimos la variable correo_electronico # le asignamos el valor ejemplo@alaingarcia.net # la variable almacena un string # creamos nuestra función de control de flujo if # con ella evaluaremos # la existencia de un caracter en un string # para ello utilizaremos la función in if caracter_a_buscar in correo_electronico: print("es un correo válido") # muestra en pantalla la leyenda: # "es un correo válido"
Y su resultado:
Ahora evaluaremos el resultado de una operación booleana, ejemplo:
mi_numero = 4 # definimos la variable mi_numero # le asignamos el valor 4 # la variable almacena un número entero valor_maximo = 10 # definimos la variable valor_maximo # le asignamos el valor 10 # la variable almacena un número entero # creamos nuestra función de control de flujo if # con ella evaluaremos # si mi_numero es menor a valor_maximo # para ello utilizaremos la función operación booleana < if mi_numero < valor_maximo: print("es un número menor a " + str(valor_maximo)) # muestra en pantalla la leyenda: # "es un número menor a 10"
Y su resultado:
Ahora evaluaremos el resultado de una operación booleana doble, ejemplo:
mi_numero = 4 # definimos la variable mi_numero # le asignamos el valor 4 # la variable almacena un número entero valor_maximo = 10 # definimos la variable valor_maximo # le asignamos el valor 10 # la variable almacena un número entero # creamos nuestra función de control de flujo if # con ella evaluaremos # si mi_numero cumple con una de dos condiciones # si es mayor a 10 # o si es un número par # para ello utilizaremos la función operación booleana or if (mi_numero > valor_maximo) or (mi_numero % 2 == 0): print("es un número válido") # muestra en pantalla la leyenda: # "es un número válido"
Y su resultado:
if (si) permite que al cumplirse o no cumplirse una condición, ejecutar una acción o tarea.
¿Qué pasa si no se cumple la condición? ¿Podríamos ejecutar un grupo u otro de sentencias si no se cumple la condición? La respuesta es sí, y tal el el fin de la dupla if (si) else (de lo contrario)
Para crear una función de control de flujo con la dupla if else usaremos el siguiente código:
if condicion_a_evaluar: tarea_a_realizar else: otra_tarea_a_realizar
Ejemplo cuando se cumple la condición:
numero_a_evaluar = 5 # definimos la variable numero_a_evaluar # le asignamos el valor 5 # creamos nuestra función de control de flujo if # la condición a evaluar es si numero_a_evaluar es mayor a 2 if numero_a_evaluar > 2: print("el número es mayor a 2") else: # si no se cumple la primera condición, ejecutamos el siguiente código: print("el número no es mayor a 2") # muestra en pantall la leyenda: "el número no es mayor a 2"
Ejemplo cuando NO se cumple la condición:
numero_a_evaluar = 0 # definimos la variable numero_a_evaluar # le asignamos el valor 5 # creamos nuestra función de control de flujo if # la condición a evaluar es si numero_a_evaluar es mayor a 2 if numero_a_evaluar > 2: print("el número es mayor a 2") else: # si no se cumple la primera condición, ejecutamos el siguiente código: print("el número no es mayor a 2") # muestra en pantall la leyenda: "el número no es mayor a 2"
Con la dupla if / else se puede analizar el valor de variables, analizar el resultado de operaciones aritméticas, analizar el contenido de strings, analizar el resultado de operaciones booleanas, analizar el contenido de lists, analizar el contenido de dictionaries, analizar el contenido de sets,etc. y realizar tareas específicas acorde al resultado obtenido.
Ahora evaluaremos el resultado de una operación aritmética, ejemplo:
numero_a_evaluar = 4 # definimos la variable numero_a_evaluar # le asignamos el valor 4 # creamos nuestra función de control de flujo if # con ella evaluaremos el resultado de una operación aritmética # la condición a evaluar es si numero_a_evaluar es un número par # para ello utilizaremos la operación aritmética % modulus # si el resultado es 0, el número es par if numero_a_evaluar % 2 == 0: print("el número es par") # muestra en pantalla la leyenda: "el número es par" else: # si no se cumple la primera condición, ejecutamos el siguiente código: print("el número NO es par") # muestra en pantalla la leyenda: "el número es par" #ejemplo donde no se cumple la primera condición: numero_a_evaluar = 5 if numero_a_evaluar % 2 == 0: print("el número es par") else: print("el número NO es par")
Y su resultado:
Ahora evaluaremos la longitud de un string, ejemplo:
nombre = "Cuauhtémoc Blanco Pardo" # definimos la variable nombre # le asignamos el valor Cuauhtémoc Blanco Pardo # la variable almacena una string # creamos nuestra función de control de flujo if # con ella evaluaremos el tamaño del string # la condición a evaluar es si el string tiene más de 2 caracteres # para ello utilizaremos la función len() # si el resultado es mayor a 2 # el string tiene más de dos caracteres if len(nombre) > 10: print("el nombre tiene mas de dos caracteres") # muestra en pantalla la leyenda: # "el nombre tiene mas de 10 caracteres" else: # si no se cumple la primera condición, ejecutamos el siguiente código: print("el nombre NO tiene mas de 10 caracteres") #ejemplo donde no se cumple la primera condición: nombre = "Maradona" if len(nombre) > 10: print("el nombre tiene mas de dos caracteres") else: print("el nombre NO tiene mas de 10 caracteres")
Y su resultado:
Ahora evaluaremos la existencia de un caracter en un string, ejemplo:
caracter_a_buscar = "@" # definimos la variable caracter_a_buscar # le asignamos el valor @ # la variable almacena un string correo_electronico = "ejemplo@alaingarcia.net" # definimos la variable correo_electronico # le asignamos el valor ejemplo@alaingarcia.net # la variable almacena un string # creamos nuestra función de control de flujo if # con ella evaluaremos # la existencia de un caracter en un string # para ello utilizaremos la función in if caracter_a_buscar in correo_electronico: print("es un correo válido") # muestra en pantalla la leyenda: # "es un correo válido" else: # si no se cumple la primera condición, ejecutamos el siguiente código: print("NO es un correo válido") # muestra en pantalla la leyenda: # "NO es un correo válido" #ejemplo donde no se cumple la primera condición: correo_electronico = "alaingarcia.net" if caracter_a_buscar in correo_electronico: print("es un correo válido") else: print("NO es un correo válido")
Y su resultado:
Ahora evaluaremos el resultado de una operación booleana, ejemplo:
mi_numero = 4 # definimos la variable mi_numero le asignamos el valor 4 # la variable almacena un número entero valor_maximo = 10 # definimos la variable valor_maximo le asignamos el valor 10 # la variable almacena un número entero # creamos nuestra función de control de flujo if # con ella evaluaremos # si mi_numero es menor a valor_maximo # para ello utilizaremos la función operación booleana < if mi_numero < valor_maximo: print("es un número menor a " + str(valor_maximo)) # muestra en pantalla la leyenda: # "es un número menor a 10" else: # si no se cumple la primera condición, ejecutamos el siguiente código: print("NO es un número menor a " + str(valor_maximo)) #ejemplo donde no se cumple la primera condición: mi_numero = 15 if mi_numero < valor_maximo: print("es un número menor a " + str(valor_maximo)) else: print("NO es un número menor a " + str(valor_maximo))
Y su resultado:
Ahora evaluaremos el resultado de una operación booleana doble, ejemplo:
mi_numero = 4 # definimos la variable mi_numero le asignamos el valor 4 # la variable almacena un número entero valor_maximo = 10 # definimos la variable valor_maximo le asignamos el valor 10 # la variable almacena un número entero # creamos nuestra función de control de flujo if # con ella evaluaremos # si mi_numero cumple con una de dos condiciones # si es mayor a 10 # o si es un número par # para ello utilizaremos la función operación booleana or if (mi_numero > valor_maximo) or (mi_numero % 2 == 0): print("es un número válido") # muestra en pantalla la leyenda: # "es un número válido" else: # si no se cumple la primera condición, ejecutamos el siguiente código: print("NO es un número válido") # muestra en pantalla la leyenda: # "NO es un número válido" #ejemplo donde no se cumple la primera condición: mi_numero = 9 if (mi_numero > valor_maximo) or (numero_a_evaluar % 2 == 0): print("es un número válido") else: print("NO es un número válido")
Y su resultado:
¿Qué pasa si queremos evaluar otra condición? ¿Qué pasa si queremos evaluar dos o mas condiciones? Para eso utlizaremos la función de control de flujo if (si) acompañada de elif (de lo contrario, si...)
Para crear una función de control de flujo con la dupla if elif usaremos el siguiente código:
if condicion_a_evaluar: tarea_a_realizar elif segunda_condicion_a_evaluar: otra_tarea_a_realizar
Ejemplo cuando se cumple la primera condición:
numero_a_evaluar = 1 # definimos la variable numero_a_evaluar # le asignamos el valor 1 # creamos nuestra función de control de flujo if # la condición a evaluar es si numero_a_evaluar es menor a 2 if numero_a_evaluar < 2: print("el número es menor a 2") elif numero_a_evaluar < 6: # si no se cumple la primera condición, evalularemos una segunda condición # la condición a evaluar es si numero_a_evaluar es menor a 6 print("el número es menor a 6") # muestra en pantall la leyenda: "el número es menor a 6"
Ejemplo cuando se cumple la segunda condición:
numero_a_evaluar = 4 # definimos la variable numero_a_evaluar # le asignamos el valor 1 # creamos nuestra función de control de flujo if # la condición a evaluar es si numero_a_evaluar es menor a 2 if numero_a_evaluar < 2: print("el número es menor a 2") elif numero_a_evaluar < 6: # si no se cumple la primera condición, evalularemos una segunda condición # la condición a evaluar es si numero_a_evaluar es menor a 6 print("el número es menor a 6") # muestra en pantall la leyenda: "el número es menor a 6"
Podemos utilizar varios elif:
if primera_condicion_a_evaluar: primera_tarea_a_realizar elif segunda_condicion_a_evaluar: segunda_tarea_a_realizar elif tercera_condicion_a_evaluar: tercera_tarea_a_realizar elif cuarta_condicion_a_evaluar: cuarta_tarea_a_realizar
Ejemplo cuando se cumple la primera condición:
numero_a_evaluar = 1 if numero_a_evaluar < 2: print("el número es menor a 2") elif numero_a_evaluar < 6: print("el número es menor a 6") elif numero_a_evaluar < 8: print("el número es menor a 8") elif numero_a_evaluar < 10: print("el número es menor a 10")
Ejemplo cuando se cumple la cuarta condición:
numero_a_evaluar = 9 if numero_a_evaluar < 2: print("el número es menor a 2") elif numero_a_evaluar < 6: print("el número es menor a 6") elif numero_a_evaluar < 8: print("el número es menor a 8") elif numero_a_evaluar < 10: print("el número es menor a 10")
Podemos utilizar varios elif y terminar con else, en caso de que ninguna condición se cumpla. Para crear una función de control de flujo con if elif y else usaremos el siguiente código:
if primera_condicion_a_evaluar: primera_tarea_a_realizar elif segunda_condicion_a_evaluar: segunda_tarea_a_realizar elif tercera_condicion_a_evaluar: tercera_tarea_a_realizar elif cuarta_condicion_a_evaluar: cuarta_tarea_a_realizar else: tarea_a_realizar
Ejemplo cuando se cumple la primera condición:
numero_a_evaluar = 1 if numero_a_evaluar < 2: print("el número es menor a 2") elif numero_a_evaluar < 6: print("el número es menor a 6") elif numero_a_evaluar < 8: print("el número es menor a 8") elif numero_a_evaluar < 10: print("el número es menor a 10") else: print("el número no es menor a 10")
Ejemplo cuando no se cumple ninguna condición y entra el else a salvar el día:
numero_a_evaluar = 15 if numero_a_evaluar < 2: print("el número es menor a 2") elif numero_a_evaluar < 6: print("el número es menor a 6") elif numero_a_evaluar < 8: print("el número es menor a 8") elif numero_a_evaluar < 10: print("el número es menor a 10") else: print("el número no es menor a 10")
Con el trío if / elif / else se puede analizar el valor de variables, analizar el resultado de operaciones aritméticas, analizar el contenido de strings, analizar el resultado de operaciones booleanas, analizar el contenido de lists, analizar el contenido de dictionaries, analizar el contenido de sets,etc. y realizar tareas específicas acorde al resultado obtenido.
Ahora evaluaremos el resultado de una operación aritmética, ejemplo:
#ejemplo donde se cumple la primera condición: numero_a_evaluar = 10 if numero_a_evaluar % 2 == 0: print("el número es multiplo de 2") elif numero_a_evaluar % 3 == 0: print("el número es multiplo de 3") else: print("el número no es multiplo de 2 ni de 3") #ejemplo donde se cumple la segunda condición: numero_a_evaluar = 9 if numero_a_evaluar % 2 == 0: print("el número es multiplo de 2") elif numero_a_evaluar % 3 == 0: print("el número es multiplo de 3") else: print("el número no es multiplo de 2 ni de 3") #ejemplo donde se cumple ninguna condición: # else aparece al rescate numero_a_evaluar = 7 if numero_a_evaluar % 2 == 0: print("el número es multiplo de 2") elif numero_a_evaluar % 3 == 0: print("el número es multiplo de 3") else: print("el número no es multiplo de 2 ni de 3")
Y su resultado:
Ahora evaluaremos un string que almacena un nombre para intentar saber si se incluyó el nombre completo con nombre de pila, apellido paterno y apellido materno ejemplo:
nombre = "Cuauhtémoc Blanco Pardo" nombre_a_analizar = nombre.split() # split crea una lista con cada palabra en el string #el espacio será utlizado para delimitar cada palabra if len(nombre_a_analizar) < 2: print("solo escribió su nombre de pila") elif len(nombre_a_analizar) < 3: print("escribió su nombre y apellido paterno") elif len(nombre_a_analizar) < 4: print("escribió su nombre, apellido paterno y materno") else: print("tiene mas de un nombre de pila")
Y su resultado:
Ahora evaluaremos si el primer caracter de un string es una vocal, ejemplo:
nombre = "Cuauhtémoc Blanco Pardo" nombre_a_analizar = nombre[0] # extraemos el primer caracter del string if "a" in nombre_a_analizar: print("el nombre inicia con la vocal a") elif "e" in nombre_a_analizar: print("el nombre inicia con la vocal e") elif "i" in nombre_a_analizar: print("el nombre inicia con la vocal i") elif "o" in nombre_a_analizar: print("el nombre inicia con la vocal o") elif "u" in nombre_a_analizar: print("el nombre inicia con la vocal u") else: print("el nombre no inicia con vocales")
Y su resultado:
for i in range() (para i en el rango) nos permite ejecutar una acción o tarea un número determinado de veces .
Para crear una función de control de flujo con for i in range() usaremos el siguiente código:
for i in range(hasta): tarea_a_realizar
Ejemplo:
for i in range(5): # creamos nuestra función de control de flujo for i in range # la tarea se repetira 5 veces print("llevamos " + str(i) + " tareas realizadas") # muestra en pantalla la leyenda: "llevamos n ciclos" # la iteracion empieza con el número 0
Como podemos ver el valor de i inicia con el número 0. Si quisiéramos que concidiera el valor de i con las veces a ejecutar, simplemente sumamos 1 a i. Ejemplo:
for i in range(5): # creamos nuestra función de control de flujo for i in range # la tarea se repetira 5 veces print("llevamos " + str(i+1) + " tareas realizadas") # muestra en pantalla la leyenda: "llevamos n ciclos" # la iteracion empieza con el número 0
Podemos utilizar for i in range para crear operaciónes aritméticas al azar:
import random #importamos la librería para generar pseudo numeros aleatorios for i in range(5): # creamos nuestra función de control de flujo for i in range # la tarea se repetira 5 veces multiplo_01 = random.randrange(1,10) # creamos un número al azar entre 1 y 10 multiplo_02 = random.randrange(1,10) # creamos un número al azar entre 1 y 10 resultado = multiplo_01 * multiplo_02 # multiplicamos nuestros números al azar print(str(multiplo_01) + " * " + str(multiplo_02) + " = " + str(resultado)) # mostramos en pantalla el resultado
Y su resultado:
En algún momento una amiga estaba aprendiendo hacer divisiones con 4 dígitos. Con este código yo le preparaba 10 divisiones diferentes cada día (incluye hoja de respuestas):
import random #importamos la librería para generar pseudo numeros aleatorios mis_divisiones = [] #creamos una list multidimensional para almacenar todas nuestras divisiones mi_division = [] #creamos una list multidimensional para almacenar una division #crearemos 10 operaciones for i in range(10): divisor = random.randrange(1000,100000) # generamos un número al azar entre 1000 y 100000 # este número servirá como divisor resultado = random.randrange(10,99) # generamos un número al azar entre 10 y 99 # este número servirá como resultado dividendo = divisor * resultado # obtenemos el dividendo para nuestra división mi_division.append(divisor) # almacenamos en nuestra list el divisor mi_division.append(dividendo) # almacenamos en nuestra list el dividendo mi_division.append(resultado) # almacenamos en nuestra list el resultado mis_divisiones.append(mi_division) mi_division = [] # borramos el contenido de mi_division para almacenar una nueva cuantas_divisiones = len(mis_divisiones) # contamos cuantas divisiones tenemos # mostramos en pantalla la hoja de respuestas for i in range(cuantas_divisiones): print(str(mis_divisiones[i][1]) + " / " + str(mis_divisiones[i][0]) + " = " + str(mis_divisiones[i][2])) # mostramos en pantalla las divisiones sin resultado # y crearemos la galera (la casita de la división)) for i in range(cuantas_divisiones): string_divisor = str(mis_divisiones[i][0]) string_dividendo =str(mis_divisiones[i][1]) espacios_divisor = len(string_divisor) espacios_dividendo =len(string_dividendo) #crearemos la galera (la casita de la división)) espacios_divisor = espacios_divisor + 1 print(" "* espacios_divisor, end="") print("_"*espacios_dividendo) print(str(mis_divisiones[i][0]) + "|" + str(mis_divisiones[i][1])) print(" ")
Y su resultado:
for i in range(inicio,fin) (para i en el rango) nos permite ejecutar una acción o tarea un número determinado de veces iniciando y terminando nuestra iteración desde una posición en particular (inicio, fin).
Para crear una función de control de flujo con for i in range(inicio,fin) usaremos el siguiente código:
for i in range(inicio,fin): tarea_a_realizar
Ejemplo:
for i in range(4,15): # creamos nuestra función de control de flujo for i in range(inicio,fin) # la tarea se repetira 11 veces, desde el numero 4 hasta el 14 print("llevamos " + str(i) + " tareas realizadas") # muestra en pantalla la leyenda: "llevamos n ciclos" # la iteracion empieza con el número 4
Y su resultado:
En una list podemos extraer los primeros 5 registros con la función de control de flujo for i in range:
lista_de_alumnos = [ "Jorge Campos", "Alberto García Aspe", "Claudio Suárez", "Cuauhtémoc Blanco", "Duilio Davino", "Francisco Palencia", "Germán Villa", "Jaime Ordiales", "Jesús Arellano", "Joel Sánchez Ramos", "Luis Hernández", "Pável Pardo", "Ramón Ramírez", "Raúl Rodrigo Lara", ] for i in range(5): print(lista_de_alumnos[i])
Y su resultado:
De la misma forma en una list podemos extraer los siguientes 5 registros con la función de control de flujo for i in range(inicio,fin):
lista_de_alumnos = [ "Jorge Campos", "Alberto García Aspe", "Claudio Suárez", "Cuauhtémoc Blanco", "Duilio Davino", "Francisco Palencia", "Germán Villa", "Jaime Ordiales", "Jesús Arellano", "Joel Sánchez Ramos", "Luis Hernández", "Pável Pardo", "Ramón Ramírez", "Raúl Rodrigo Lara", ] for i in range(5,10): print(lista_de_alumnos[i])
Y su resultado:
for i in range(inicio,fin,salto) (para i en el rango) nos permite ejecutar una acción o tarea un número determinado de veces iniciando y terminando nuestra iteración desde una posición en particular (inicio, fin) y omitiendo algunas posiciones.
Para crear una función de control de flujo con for i in range(inicio,fin,salto) usaremos el siguiente código:
for i in range(inicio,fin,salto): tarea_a_realizar
Ejemplo:
for i in range(0,15,2): # creamos nuestra función de control de flujo for i in range(inicio,fin,salto) # la tarea se repetira 11 veces, desde el numero 0 hasta el 14 # mostrará una posición y omitirá otra # mostrará una sí y una no print("llevamos " + str(i) + " tareas realizadas") # muestra en pantalla la leyenda: "llevamos n ciclos" # la iteracion empieza con el número 0
Y su resultado:
Otro ejemplo con un resultado diferente:
for i in range(0,15,3): # creamos nuestra función de control de flujo for i in range(inicio,fin,salto) # la tarea se repetira 8 veces, desde el numero 0 hasta el 14 # mostrará una posición y omitirá 2 # mostrará una sí y dos no print("llevamos " + str(i) + " tareas realizadas") # muestra en pantalla la leyenda: "llevamos n ciclos" # la iteracion empieza con el número 0
Y su resultado:
En una list podemos extraer registros de manera alternada, uno sí y uno no, con la función de control de flujo for i in range(inicio,fin,salto):
lista_de_alumnos = [ "Jorge Campos", "Alberto García Aspe", "Claudio Suárez", "Cuauhtémoc Blanco", "Duilio Davino", "Francisco Palencia", "Germán Villa", "Jaime Ordiales", "Jesús Arellano", "Joel Sánchez Ramos", "Luis Hernández", "Pável Pardo", "Ramón Ramírez", "Raúl Rodrigo Lara", ] total_de_registros = len(lista_de_alumnos) for i in range(0,total_de_registros,2): print(lista_de_alumnos[i])
Y su resultado:
for (para) permite también hacer iteraciones en strings, lists, dictionaries, sets, tuples, dataframes, arrays, etc.
Para crear una iteración con for usaremos el siguiente código:
for elemento in variable: tarea_a_realizar
A continuación se muestra una iteración utilizando for, caracter por caracter, de un string:
nombre = "Cuauhtémoc Blanco Pardo" for i in nombre: print("Letra:" + i)
Y su resultado:
Con split() podemos partir un string palabra con palabra. El resultado es una list. Podemos hacer también una iteración en una list. A continuación se muestra una iteración utilizando for, palabra por palabra, de un string:
frase = "El respeto al derecho ajeno es la paz" palabras = frase.split() for i in palabras: print("Palabra extraida: " + i)
Y su resultado:
Si tenemos una list unidimensional, podemos hacer también una iteración en ella. A continuación se muestra una iteración de una list unidimensional utilizando for :
lista_de_alumnos = [ "Jorge Campos", "Alberto García Aspe", "Claudio Suárez", "Cuauhtémoc Blanco", "Duilio Davino", "Francisco Palencia", "Germán Villa", "Jaime Ordiales", "Jesús Arellano", "Joel Sánchez Ramos", "Luis Hernández", "Pável Pardo", "Ramón Ramírez", "Raúl Rodrigo Lara", ] for elemento in lista_de_alumnos: print(elemento + " jugó en el mundial de futbol de 1994")
Y su resultado:
De igual forma podemos hacer iteraciones con for en:
while (mientras) permite que mientras se cumpla una condición, se ejecute una tarea. Con ello podemos repetir la ejecución de una tarea hasta que se cumpla una condición, de ser necesario de manera infinita.
Para crear una función de control de flujo con while usaremos el siguiente código:
while condicion_a_evaluar: tarea_a_realizar
Ejemplo:
numero_a_evaluar = 0 # definimos la variable numero_a_evaluar # le asignamos el valor 0 # creamos nuestra función de control de flujo while # la condición a evaluar es: mientras el numero_a_evaluar sea menor a 10 while numero_a_evaluar < 10: print("el número ahora es: " + str(numero_a_evaluar)) # muestra en pantalla el número ahora es numero_a_evaluar = numero_a_evaluar + 1 # cada vez que se ejecute la función, incrementaremos en 1 el valor # de número a evaluar
Ahora usaremos while para realizar varias multiplicaciones con dos números al azar. Interrumpiremos las multiplicaciones cuando el resultado sea un número múltiplo de 3:
import random #importamos la librería para generar pseudo numeros aleatorios resultado = 5 while resultado % 3 != 0: multiplo_01 = random.randrange(1,10) multiplo_02 = random.randrange(1,10) resultado = multiplo_01 * multiplo_02 print(str(multiplo_01) + " * " + str(multiplo_02) + " = " + str(resultado))
Y su resultado:
Ahora usaremos while para solicitar al usuario escriba un número multiplo de 8. La petición se repetirá hasta el infinito de ser necesario hasta que el usuario escriba un número multiplo de 8.
resultado = 5 while resultado % 8 != 0: print('Escribe un número multiplo de 8: ') resultado = int(input())
Como se vió líneas arriba, while (mientras) permite que mientras se cumpla una condición, se ejecute una tarea. Con ello podemos repetir la ejecución de una tarea hasta que se cumpla una condición, de ser de necesario de manera infinita.
Con la combinación de while / continue / break podemos limitar las veces en que se ejecute una tarea, a pesar de que se cumpla o no la condición.
Para crear una función de control de flujo con while / continue / break usaremos el siguiente código:
while True: if primera_condicion continue else break
Ahora usaremos while / continue / break para solicitar al usuario escriba un número multiplo de 8. El usuario sólo tendrá 3 oportunidades.
resultado = 5 intentos = 3 while True: print('Tienes ' + str(intentos) + ' oportunidades') print('Escribe un número múltiplo de 8: ') resultado = int(input()) intentos = intentos - 1 if (resultado % 8 == 0): print("¡Felicidades!") break elif (intentos > 0 ): continue else: print("No pudiste elegir un múltiplo de 8 ") break
Y el resultado cuando elije el número correcto:
Y el resultado cuando elije el número equivocado:
En el ejemplo anterior, ¿qué pasa si el usuario captura una letra?
Se produce un error, puesto que no estamos validando correctamente los datos que ingresa el usuario. ¿Cómo validar? Usando un exception handling ( manejo de excepciones ) con las funciones de control de flujo try / except . Para este ejemplo ,que estamos solicitando número enteros, podemos usar este código:
resultado = 5 intentos = 3 while True: try: print('Tienes ' + str(intentos) + ' oportunidades') print('Escribe un número múltiplo de 8: ') resultado = int(input()) intentos = intentos - 1 if (resultado % 8 == 0): print("¡Felicidades!") break elif (intentos > 0 ): continue else: print("No pudiste elegir un múltiplo de 8 ") break except ValueError: print("Escribe un número entero") continue else: break print("se produjo un error...")
Y el resultado validando los datos ingresados y siguiendo la dinámica del código:
Este ejemplo es parte de un tutorial más completo que puede consultarse:
Comenta y opina este texto Lee mi libro de visitas
© 1997-2024 Alain García
albegago@hotmail.com
Twitter: @feesgo
YouTube
El vínculo a este documento es:
http://www.alaingarcia.net/weird/python_07_funciones_control_flujo.php
Puedes apoyar a este sitio invitándome a comer...
Este sitio utiliza cookies propias y de terceros para mejorar sus servicios. Si continua navegando, entendemos que acepta su uso. Política de Privacidad