El ciclo while en Python permite ejecutar un bloque de código repetidamente mientras se cumpla una condición, la cual se evalúa en cada iteración del ciclo.

En este artículo exploraremos todo acerca de esta estructura y aprenderás cómo implementarla.

    << [Guía gratuita] >> Introducción al lenguaje de programación Python  

En esta estructura, la condición es una expresión booleana que se evalúa en cada iteración del ciclo. Si la condición es verdadera, el bloque de código dentro del ciclo se ejecuta una y otra vez. Si es falsa, el ciclo se detiene y la ejecución continúa después del ciclo.

Es importante tener en cuenta que si la condición nunca se vuelve falsa, el ciclo while continuará ejecutándose en un bucle infinito, lo que puede provocar problemas en el programa. Por lo tanto, es esencial asegurarse de que la condición del ciclo while eventualmente se vuelva falsa para evitar esta situación.

Ventajas y desventajas del ciclo while en Python

Ventajas

  • El ciclo while es una forma efectiva de repetir un bloque de código mientras se cumpla una condición. Esto lo hace útil para tareas que deben repetirse varias veces hasta que se cumpla una determinada condición.
  • Es posible anidar ciclos while dentro de otros ciclos while o en estructuras de control de flujo más complejas para crear lógica más avanzada.
  • Es más flexible que otros ciclos, ya que la condición se puede especificar en cualquier lugar del cuerpo del ciclo, lo que permite mayor control en la repetición de instrucciones.
  • Permite hacer uso de la interrupción con la sentencia break.

Desventajas

  • Si la condición del ciclo while no se actualiza correctamente, el ciclo puede ejecutarse infinitamente, lo que se conoce como un «ciclo infinito».
  • Puede ser más difícil de entender que otras estructuras de control de flujo, especialmente si la lógica del ciclo es compleja.
  • Puede ser ineficiente en algunos casos, ya que el programa puede ejecutar más instrucciones de las necesarias en cada iteración, lo que consume recursos de la máquina.

Ciclos while en Python

Implementación del ciclo while en Python

El ciclo while es una estructura de control de flujo en Python que permite ejecutar un bloque de código repetidamente, mientras que se cumpla una condición determinada. La sintaxis básica del ciclo while es la siguiente:

while <expresión lógica>: <bloque de código>

Donde <expresión lógica> es una condición que se evalúa en cada iteración del ciclo, y <bloque de código> es el conjunto de instrucciones que se ejecutan en cada iteración mientras la condición sea verdadera. El ciclo while continuará ejecutando el bloque de código hasta que la expresión lógica se evalúe como falsa, momento en el cual el control del flujo del programa saldrá del ciclo y se ejecutará la siguiente línea de código en el flujo principal.

contador = 0

while contador < 3:

entrada = input("Ingrese una palabra: ")

contador += 1

if entrada == "despedida":

print("¡Hasta luego!")

break

else:

print("Se ha superado el número máximo de intentos.")

print("Número de intentos:", contador)

En este código, creamos una variable llamada contador que se inicializa en 0 y se incrementa en 1 en cada iteración del ciclo while. El ciclo se ejecutará hasta que la variable contador sea mayor o igual a 3, o bien hasta que se ingrese la palabra despedida. Dentro del ciclo, se solicita al usuario que ingrese una palabra y se verifica si es igual a despedida usando una declaración if.

Si la palabra ingresada es despedida, se imprime un mensaje de despedida y se utiliza la instrucción break para salir del ciclo while. Al realizar tres intentos y la palabra despedida no ha sido ingresada, se imprime un mensaje indicando que se ha superado el número máximo de intentos. Finalmente, se imprime el número de intentos realizados.

Interrupciones en el ciclo while

Las interrupciones en el ciclo while son mecanismos que permiten salir del mismo antes de que la condición lógica se vuelva falsa. Hay dos tipos principales de interrupciones en el ciclo while en Python: la instrucción break y la instrucción continue.

La instrucción break permite salir del ciclo while inmediatamente, cuando se cumple una determinada condición. Por ejemplo, si se tiene un ciclo while que se ejecuta hasta que se ingresa la palabra salir, se puede utilizar la instrucción break para salir del ciclo en el momento en que se ingresa dicha palabra.

Por otro lado, la instrucción continue permite saltar la iteración actual del ciclo while y continuar con la siguiente iteración. Esto significa que cualquier código que esté después de la instrucción continue dentro del bloque de código del ciclo while no se ejecutará en esa iteración. Por ejemplo, si se tiene un ciclo while que itera sobre una lista de elementos y se desea omitir un elemento en particular, se puede utilizar la instrucción continue para saltar la iteración actual cuando se encuentra dicho elemento.

entrada = " "

suma = 0

fallido = 0

while suma < 3:

suma += 1

print("Intento %d." % suma)

entrada = input("Clave: ")

print()

# Al ingresar "despedida", se evita que la variable fallido se incremente.

if entrada == "despedida":

continue

fallido += 1

print("Tuviste %d intentos fallidos." % fallido)

Este código utiliza un ciclo while para pedir al usuario que ingrese una clave hasta que el usuario haya intentado tres veces o hasta que ingrese la palabra despedida. Si el usuario ingresa despedida, el ciclo while se interrumpe y muestra el número de intentos fallidos. En caso contrario, el ciclo while seguirá ejecutándose hasta que se hayan hecho tres intentos.

Dentro del ciclo while, se incrementa la variable suma en 1 en cada iteración, lo que lleva un registro del número de intentos. Se imprime un mensaje indicando el número de intento actual utilizando el formateo de cadenas. Luego se solicita al usuario que ingrese una clave y se almacena en la variable entrada.

Si el usuario ingresa despedida, la instrucción continue se utiliza para saltar a la siguiente iteración del ciclo while sin incrementar la variable fallido, lo que significa que ese intento no se considera fallido.

Si el usuario no ingresa despedida, la variable fallido se incrementa en 1, lo que indica que se ha hecho un intento fallido. El ciclo while continúa ejecutándose hasta que se han realizado tres intentos o hasta que se ingresa la palabra despedida.

Después de que el ciclo while se ha completado, se imprime un mensaje que indica el número de intentos fallidos. El número de intentos fallidos es igual al valor de la variable fallido.

suma = 0

while suma < 3:

entrada = input("Clave:")

#Si se ingresa la palabra "despedida, se termina el ciclo.

if entrada == "despedida":

break

suma = suma + 1

print("Intento %d. \n " % suma)

print("Tuviste %d intentos fallidos." % suma)

El código comienza definiendo la variable suma en 0. Luego, inicia un ciclo while que se repetirá mientras suma sea menor que 3. En cada iteración del ciclo, el usuario puede ingresar una clave a través de la función input(). Si el usuario ingresa la palabra clave despedida, el ciclo se interrumpe inmediatamente con la instrucción break. De lo contrario, el ciclo continúa y la variable suma se incrementa en 1. Además, se imprime un mensaje indicando el número del intento actual.

Una vez que se completa el ciclo, se imprime el número total de intentos que se hicieron antes de que el ciclo termine, ya sea porque se ingresó la palabra clave despedida o porque se alcanzó el máximo de tres intentos. Si el ciclo terminó porque se ingresó la palabra clave, la variable suma contendrá el número de intentos hasta ese momento. Si el ciclo terminó porque se alcanzó el máximo de tres intentos, la variable suma contendrá el valor 3.

Función exit()

La función exit() en Python detiene inmediatamente la ejecución del programa. Al llamar a esta función, se sale del programa y se devuelve el control al sistema operativo. Es decir, cualquier código que se encuentre después de la llamada a exit() no se ejecutará.

Esta función puede tomar un argumento opcional, que se utiliza como código de estado del programa. Este se refiere a un número entero que indica el motivo por el cual el programa ha finalizado. Por lo general, se usa 0 para indicar que el programa finalizó con éxito y otros valores para indicar algún tipo de error.

import sys

while True:

try:

with open('log.txt', 'r') as f:

lines = f.readlines()

if not lines:

print("El archivo está vacío.")

else:

for line in lines:

print(line)

except FileNotFoundError:

print("El archivo no existe.")

except:

print("Ha ocurrido un error.")

sys.exit()

En este ejemplo, estamos abriendo el archivo log.txt en modo de lectura y leyendo todas las líneas del archivo usando la función readlines(). Si el archivo está vacío, imprimimos un mensaje que indica que el archivo está vacío. De lo contrario, imprimimos cada línea del archivo.

Si ocurre un error al intentar leer el archivo, imprimimos un mensaje de error y usamos la función exit() del módulo sys para salir del programa. Esta función termina inmediatamente la ejecución del programa sin volver al flujo de control principal.

El ciclo while se ejecutará continuamente hasta que se produzca un error o se interrumpa manualmente la ejecución del programa.

Ejemplo de código con el bucle while

Este es un ejemplo de cómo se puede utilizar un ciclo while en el juego de Piedra, papel o tijeras en Python:

import random

# Definimos las opciones de juego

opciones = ["piedra", "papel", "tijeras"]

# Inicializamos las variables

jugador_puntos = 0

computadora_puntos = 0

# Repetimos hasta que alguien alcance 3 puntos

while jugador_puntos < 3 and computadora_puntos < 3:

# El jugador selecciona su opción

jugador_opcion = input("Elige piedra, papel o tijeras: ")

# La computadora selecciona una opción al azar

computadora_opcion = random.choice(opciones)

# Imprimimos las opciones elegidas

print("Jugador: ", jugador_opcion)

print("Computadora: ", computadora_opcion)

# Determinamos el ganador de la ronda

if jugador_opcion == computadora_opcion:

print("Empate!")

elif jugador_opcion == "piedra" and computadora_opcion == "tijeras":

print("Ganaste!")

jugador_puntos += 1

elif jugador_opcion == "papel" and computadora_opcion == "piedra":

print("Ganaste!")

jugador_puntos += 1

elif jugador_opcion == "tijeras" and computadora_opcion == "papel":

print("Ganaste!")

jugador_puntos += 1

else:

print("Perdiste!")

computadora_puntos += 1

# Imprimimos los puntos actuales

print("Jugador: ", jugador_puntos)

print("Computadora: ", computadora_puntos)

print()

# Imprimimos el ganador del juego

if jugador_puntos > computadora_puntos:

print("¡Ganaste el juego!")

else:

print("¡Perdiste el juego!")

Complejidad del ciclo while

La notación Big O se utiliza para analizar la complejidad temporal de un algoritmo. En el caso de un ciclo while en Python, la complejidad temporal dependerá de varios factores, como el número de iteraciones del ciclo, la complejidad de las operaciones dentro del ciclo, y cómo se actualiza la condición del ciclo.

En general, si la condición del ciclo es simple y la cantidad de iteraciones es fija, la complejidad temporal será O(1) o constante. Por ejemplo, si se tiene un ciclo while que se ejecuta cinco veces sin ninguna operación adicional, la complejidad temporal será constante O(1).

Sin embargo, si la condición del ciclo depende de una entrada de datos, la complejidad temporal dependerá de la cantidad de veces que se ejecuta el ciclo. En este caso, la complejidad temporal podría ser O(n), donde n es el número de iteraciones del ciclo.

También es posible que las operaciones dentro del ciclo sean complejas y dependan de una entrada de datos, lo que aumentaría la complejidad temporal. En general, para analizar la complejidad temporal de un ciclo while en Python, es importante evaluar la complejidad de todas las operaciones dentro del ciclo y cómo se actualiza la condición del ciclo.

Como viste, el ciclo while es útil cuando se quiere ejecutar un bloque de código un número indefinido de veces hasta que se cumpla una determinada condición. A la vez, es importante asegurarse de que la condición eventualmente se vuelva falsa para evitar un ciclo infinito.

Si quieres conocer más, revisa nuestra publicación acerca del ciclo for.

Introducción a Python
Introducción al lenguaje de Python

Publicado originalmente el 27 de abril de 2023, actualizado el 27 de abril de 2023

Topics:

Python