En Python, una estructura de repetición (bucle) se puede escribir así:
while condición:
instrucción
Puede que recuerde a la instrucción if, y es lógico. La única diferencia en la forma es que se usa while en lugar de if.
Pero lo importante es entender la diferencia en el significado:
if ejecuta su contenido una sola vez si la condición es verdadera.
while repite su contenido tantas veces como la condición sea verdadera.
Nota: Las reglas de indentación (sangrado) son igual de importantes aquí.
El esquema general de un bucle while es el siguiente:
Cosas a tener en cuenta:
Si se quiere ejecutar varias instrucciones dentro del while, todas deben estar indentadas igual (igual que con if).
El conjunto de instrucciones que se ejecutan dentro del while se llama el cuerpo del bucle.
Si la condición es falsa desde el principio, el cuerpo del bucle no se ejecuta ni una sola vez.
El cuerpo del bucle debe modificar el valor de la condición en algún momento. Si no lo hace, y la condición siempre es verdadera, el bucle nunca termina. Por ejemplo, si estás resolviendo tareas, con cada tarea que resuelves deberías tener menos pendientes.
Un bucle infinito
Un bucle infinito (o eterno) es aquel que nunca termina, porque su condición nunca se vuelve falsa.
En este ejemplo:
Este programa imprimirá la frase una y otra vez sin parar.
IMPORTANTE:
Para experimentar cómo funciona un bucle infinito, se puede abrir IDLE (el editor de Python), crear un archivo nuevo, pega ese código del ejemplo superior «Estoy atrapado en un blucle), guardarlo y ejecutarlo. El texto se repite indefinidamente.
Para detener el programa, presiona Ctrl-C (o Ctrl-Break en algunos equipos). Esto lanzará una excepción llamada KeyboardInterrupt y detendrá el bucle.
Usando while para encontrar el número más grande
Se va a realizar un ejemplo de cómo aplicar este bucle para encontrar el número más grande en una serie de datos introducidos por el usuario:
Este programa repite una tarea (comparar y actualizar el número más grande) mientras el usuario no introduzca -1 para indicar que ha terminado.
Funciona de la siguiente manera:
el bucle empieza en la línea del while,
el cuerpo contiene una condición if y otra entrada de datos,
y se detiene cuando el usuario decide dejar de introducir números.
Se crea una variable llamada mayor para almacenar el número más grande que se vaya encontrando.
Se inicializa con un número muy pequeño, en este caso -999999999, con la idea de que cualquier número razonable introducido por el usuario será mayor que ese valor.
Este valor inicial es simplemente una técnica para asegurarse de que el primer número que entre el usuario lo supere (a menos que sea más pequeño, lo cual es poco probable).
Se pide al usuario que introduzca un número por teclado.
Ese número se convierte a tipo entero (int) y se guarda en la variable numero.
El mensaje aclara que si el usuario escribe -1, el programa terminará.
Comienza un bucle while que sólo se ejecuta si el número introducido no es -1.
Es decir, mientras el usuario siga escribiendo números distintos de -1, el programa continuará dentro del bucle.
Se evalúa si el número actual (numero) es mayor que el que está guardado en mayor.
Si la condición anterior se cumple (es decir, numero es mayor que mayor), entonces actualizamos el valor de mayor con ese nuevo número.
Así, siempre se guarda el número más grande introducido hasta ese momento.
Aquí se vuelve a pedir otro número al usuario.
Este paso es esencial, ya que modifica la condición del bucle.
Si el usuario introduce -1, el bucle terminará en la siguiente comprobación.
Una vez que el bucle ha terminado (porque el usuario ha escrito -1), se muestra en pantalla el número más grande que fue introducido antes.
Este valor está almacenado en la variable mayor.
Ejemplo de ejecución
Supongamos que el usuario escribe los siguientes números:
10
20
15
30
-1
El programa hará lo siguiente:
Compara 10 con -999999999 → lo actualiza a 10
Compara 20 con 10 → lo actualiza a 20
Compara 15 con 20 → no lo cambia
Compara 30 con 20 → lo actualiza a 30
Al escribir -1, el bucle termina
Imprime: «El número más grande es: 30»
Para que el programa avise si el usuario no ha introducido ningún número válido antes del -1, podemos hacer una pequeña mejora:
Usaremos una variable adicional para saber si al menos se ha introducido un número válido, y modificaremos la parte final del programa según eso.
Versión modificada del código:
¿Qué hace esta versión?
Introduce la variable numero_valido, que se inicia en False.
Si el usuario introduce al menos un número distinto de -1, se cambia a True.
Al final, según el valor de numero_valido, el programa:
Muestra el número más grande, si se introdujeron datos.
Muestra un mensaje de aviso, si el usuario escribió -1 directamente sin dar ningún número.
Ejemplo:
Caso 1 – El usuario escribe:
15
28
3
-1
Resultado:
El número más grande es: 28
Caso 2 – El usuario escribe solo:
-1
Resultado:
No introdujiste ningún número válido.
Contenido Web de Yolanda Muriel está sujeto bajo Licencia Creative Commons Atribución-NoComercial-SinDerivadas 3.0 Unported.











