Pythonizate "Aprendiendo a programar"
Índice
¡Hola mis queridos entusiastas de la programación! En el post del día de hoy vamos a aprender sobre el segundo tipo de estructuras de control de flujo, conocidas como estructuras de control iteración.
¿Qué es una estructura de control iterativa?
En el post anterior estudiamos la estructura de control condicional, donde pudimos notar que su función principal es evaluar si una o más condiciones se cumplen. La estructura de control iterativa es la que nos permite ejecutar un fragmento de código repetidamente, mientras se cumpla la condición establecida. Para esto Python usa dos estructuras cíclicas:
• El bucle while
.
• El bucle for
.
Bucle While
El bucle while
, permite ejecutar repetidamente un bloque de instrucciones siempre que una condición sea verdadera. Cuando la condición se vuelve falsa, el control del programa pasa inmediatamente a la línea posterior al bucle.
La estructura del bucle while
es la siguiente:
While(condición):
acciones
acciones
acciones
Los aspectos importantes a saber de el bucle while
son:
- Esta estructura puede contener una sola instrucción o un bloque de instrucciones.
- La condición puede ser cualquier expresión.
- El bucle se ejecuta mientras la condición sea verdadera.
Veamos el siguiente ejemplo de un contador:
Input
contador = 0
while (contador <= 10):
print("El contador va por: ",contador)
contador = contador + 1
print("El programa ha finalizado")
Output
El contador va por: 0
El contador va por: 1
El contador va por: 2
El contador va por: 3
El contador va por: 4
El contador va por: 5
El contador va por: 6
El contador va por: 7
El contador va por: 8
El contador va por: 9
El contador va por: 10
El programa ha finalizado
Primero que nada, nuestra condición era que el bucle se iba a ejecutar hasta que el contador fuera menor o igual a 10, luego finalizaba el programa.
- Establecemos la variable contador en cero.
- Entra en el ciclo
while
y verifica la condición, es verdadera? Si. - Entra en el bucle y ejecuta la acción interna.
- Imprime por pantalla el valor de la variable, aumenta su valor en 1.
- Luego vuelve a empezar el ciclo.
- Cuando llega a el valor de la variable contador a 11 verifica si la condición es verdadera, no lo es, sale del bucle y finaliza el programa.
El bucle infinito
Al usar los bucles while
debemos tener precaución, porque existe la posibilidad de que nuestro condicional nunca sea falso, dando como resultado un bucle que nunca termina, conocido como bucle infinito.
Un bucle infinito podría ser útil en la programación cliente / servidor donde el servidor necesita ejecutarse continuamente para que los programas del cliente puedan comunicarse con él cuando sea necesario.
Otro forma de usar el bucle infinito es cuando no se conoce la cantidad de ciclos a ejecutar, este se controla mediante un valor centinela que indica si ya se introdujo el ultimo valor. Por ejemplo:
Input
print("ESTE PROGRAMA CALCULA EL PROMEDIO DE UN CURSO")
print()
contador = 0
total = 0
calificacion = int(input("Introduzca la calificacion del alumno o -1 para terminar el programa: "))
while (calificacion != -1):
total = total + calificacion
contador = contador + 1
calificacion=int(input("Introduzca la calificacion del alumno o -1 para terminar el programa: "))
if (contador != 0):
total = total / contador
print()
print("El promedio del curso fue: ", total)
print()
else:
print("No introdujo ninguna calificacion")
print("El programa ha finalizado")
Output
ESTE PROGRAMA CALCULA EL PROMEDIO DE UN CURSO
Introduzca la calificacion del alumno o -1 para terminar el programa: 10
Introduzca la calificacion del alumno o -1 para terminar el programa: 8
Introduzca la calificacion del alumno o -1 para terminar el programa: 5
Introduzca la calificacion del alumno o -1 para terminar el programa: 1
Introduzca la calificacion del alumno o -1 para terminar el programa: 6
Introduzca la calificacion del alumno o -1 para terminar el programa: -1
El promedio del curso fue: 6.0
El programa ha finalizado
No se asusten por la estructura del código, vamos a repasar su ejecución desde el principio hasta el final:
- Primero declaramos nuestras variables a usar, calificación que sera nuestro valor centinela, contador que sera quien cuenta el numero de ciclos y total donde se almacenara todas las calificaciones.
- Luego pedimos que nuestro valor centinela, cuando se introduzca -1 se terminara el programa.
- Entramos en bucle y este verifica si el valor introducido es diferente de -1, lo es? Entra en el bucle y ejecuta el bloque de instrucciones. Este bucle se ejecutara infinitamente hasta que se introduzca el valor -1.
- Al introducir -1 sale del bucle y entra en un condicional, aquí se verifica si el contador es distinto de cero, de ser así entra en la sentencia
if
y ejecuta el bloque de instrucciones. Si el contador es cero se ejecuta la sentenciaelse
diciendo que nunca se introdujo una calificación. - Luego finaliza el programa.
¡Excelenteeee, ya vamos entendiendo la lógica de la programación, estoy muy orgulloso de todos ustedes. Estoy seguro que han aprendido bastante y ahora es que queda camino por recorrer!
Bucle for
Los bucles for
se usan cuando se tiene un bloque de código que se desea repetir una cantidad fija de veces, también se usa para recorrer una secuencia
La estructura del bucle for
es la siguiente:
for elemento in secuencia:
print elemento
La diferencia entre el bucle for
y el bucle while
, es que el segundo debe verificar una condición en cada iteración, mientras que el bucle for
no. Por ejemplo:
Input
for i in range(3):
print("Valor de la variable es: ", i)
print()
print("El programa ha finalizado")
Output
Valor de la variable es: 0
Valor de la variable es: 1
Valor de la variable es: 2
El programa ha finalizado
La función range(n)
crea una lista de n
números enteros consecutivos que empieza en 0 y acaba en n - 1.
En este ejemplo el bucle for
cuenta dede 0 hasta el 2, y el valor es almacenado en la variable i, es decir, en el primer ciclo range()
comienza en 0, este valor es asignado a la variable i
, en el siguiente ciclorange()
vale 1, este valor es asignado a la variable i
y así sucesivamente hasta donde se establezca.
Para entenderlo mejor, cambiemos la función range()
, por una lista:
Input
for i in [0,1,2]:
print("Valor de la variable es: ", i)
print()
print("El programa ha finalizado")
Output
Valor de la variable es: 0
Valor de la variable es: 1
Valor de la variable es: 2
El programa ha finalizado
El resultado obtenido es el mismo, recordemos que range()
es una lista de números.
También se puede establecer desde y hasta donde va a contar mi bucle for
.
Input
for i in range(3,6): #range(desde,hasta-1)
print("Valor de la variable es: ",i)
print()
print("El programa ha finalizado")
Output
Valor de la variable es: 3
Valor de la variable es: 4
Valor de la variable es: 5
El programa ha finalizado
Con range()
podemos establecer fácilmente desde donde empieza y hasta donde va a contar.
También podemos decirle de cuanto en cuanto va a contar. Por ejemplo hagamos una tabla de multiplicar:
Input
contador=1
for i in range(3,31,3): #El for cuenta desde el 3 hasta el 31 de 3 en 3
print("3x",contador,"=",i)
contador = contador + 1
print()
print("El programa ha finalizado")
Output
3x 1 = 3
3x 2 = 6
3x 3 = 9
3x 4 = 12
3x 5 = 15
3x 6 = 18
3x 7 = 21
3x 8 = 24
3x 9 = 27
3x 10 = 30
El programa ha finalizado
De esta forma con la función range()
podemos hacer una tabla de multiplicar fácilmente. Uno de los motivos porque se recomienda usar el range()
en vez de una lista es porque durante la ejecución del programa ocupan menos memoria en el ordenador.
Como pudimos notar, a la función range()
le podemos dar distintos usos, todo depende de lo que queramos hacer.
Para finalizar les dejo una serie de ejemplos del bucle for
, para que los estudien. Descargue Ejemplos_For.rar
!Esto fue todo por hoy, nos vemos en el próximo post, donde estudiaremos el control de bucles y las funciones!
Si tienen alguna duda o consulta no duden en dejarla en los comentarios. En el Post Anterior deje planteado un ejercicio, el que lo resuelva va a ganar 0.5 SBD, tienen hasta el miércoles para resolverlo. ¡Éxitos!
"El ser humano es inteligente por naturaleza, la tecnología es solo un complemento"
╭════════════╮
Sígueme en mi Blog
╰════════════╯