Funciones de control de flujo en python: if, else, elif, if elif, while, break, for, for i in range()

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

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"

creamos nuestra función de control de flujo if

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:

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.

¿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:

Con if evaluaremos el resultado de una operación aritmética

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:

Con if evaluaremos la lingitud de una string

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:

Con if evaluaremos la existencia de un caracter en un string

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:

Con if  evaluaremos el resultado de una operación booleana

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:

Con if  evaluaremos el resultado de una operación booleana

if else

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"

creamos nuestra función de control de flujo if / else

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"

creamos nuestra función de control de flujo if / else

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:

Con if / else evaluaremos el resultado de una operación aritmética

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:

Con if else evaluaremos la lingitud de una string

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:

Con if else evaluaremos la existencia de un caracter en un string

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:

Con if  else evaluaremos el resultado de una operación booleana

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:

Con if  else evaluaremos el resultado de una operación booleana

if elif

¿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"

creamos nuestra función de control de flujo if  elif donde se cumple la primera condición

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"

creamos nuestra función de control de flujo if / else donde se cumple la segunda condición

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")

Podemos utilizar varios elif.

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. Ejemplo cuando se cumple la cuarta condición

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")

Podemos utilizar varios elif y terminar con un else.

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")

Podemos utilizar varios elif.

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:

Con if / elif / else evaluaremos el resultado de una operación aritmética

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:

Con if elif else evaluaremos la longitud de una string

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:

Con if elif else evaluaremos la existencia de un caracter en un string

for i in range(hasta)

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

creamos nuestra función de control de flujo for i in range()

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

Si quisiéramos que concidiera el valor de i con las veces a ejecutar, simplemente sumamos 1 a i

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:

Con if evaluaremos el resultado de una operación aritmética

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:

Código python para crear divisiones, incluye hoja de resupesta

for i in range(inicio, fin)

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:

creamos nuestra función de control de flujo for i in range(inicio,fin)

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:

En una list podemos extraer los primeros 5 registros con la función de control de flujo for i in range

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:

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)

for i in range(inicio, fin,salto)

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:

creamos nuestra función de control de flujo for i in range(inicio,fin,salto)

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:

creamos nuestra función de control de flujo for i in range(inicio,fin,salto)

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:

En una list podemos extraer los primeros 5 registros con la función de control de flujo for i in range

for

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:

iteración utilizando for, caracter por caracter, de un string

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:

Con split() podemos partir un string palabra con palabra. El resultado es una lista.  Podemos hacer también una iteración en una lista. A continuación se muestra una iteración utilizando for, palabra por palabra, de un string

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:

iteración de una list unidimensional utilizando for

De igual forma podemos hacer iteraciones con for en:

while

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

creamos nuestra función de control de flujo while

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:

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

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())


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.

while continue break

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:

la combinación de while / continue / break para  limitar las veces en que se ejecute  una tarea, a pesar de que se cumpla o no la condición.

Y el resultado cuando elije el número equivocado:

la combinación de while / continue / break para  limitar las veces en que se ejecute  una tarea, a pesar de que se cumpla o no la condición.

En el ejemplo anterior, ¿qué pasa si el usuario captura una letra?

al no validar los datos que ingresa el usuario se produce un error

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:

Usando un exception handling ( manejo de excepciones )  con las funciones de control de flujo try  / except .

Este ejemplo es parte de un tutorial más completo que puede consultarse:

Sitios de interés

Sitio oficial de Python


Comenta y opina este texto     Lee mi libro de visitas
© 1997-2020 Alain García Gómez
albegago@hotmail.com
Twitter: @feesgo
El vínculo a este documento es:

Compartir en facebook Compartir en twitter Compartir en whatsapp Rss

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