Geekflare cuenta con el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliados comprando enlaces en este sitio.
Comparte en:

Cómo emular bucles Do-While en Python

Escáner de seguridad de aplicaciones web Invicti – la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

En este tutorial, aprenderá cómo emular un bucle de hacer mientras in Python.

En cualquier lenguaje de programación, los bucles lo ayudan a realizar ciertas acciones repetidamente, según una condición de bucle. Python admite la mientras y es loop construye pero no admite de forma nativa el hacer mientras lazo.

Sin embargo, puede emular un ciclo do-while si comprende cómo funciona, utilizando bucles y bucles declaraciones de control en Python.

Aprenderá a hacer esto en los próximos minutos. ¡Vamos a empezar!

What is the Do-While Loop Construct?

¿Qué es la construcción de bucle Do-While?

Si ha programado en lenguajes como C o C + +, probablemente te hayas topado con la construcción del bucle do-while.

En un ciclo do-while, el conjunto de declaraciones en el cuerpo del ciclo, dentro del bloque delimitado por llaves, se ejecuta primero y luego se verifica la condición del ciclo.

Puede ejecutar los siguientes ejemplos en C en Compilador de C en línea de Geekflare—directamente desde su navegador.

Considere el siguiente fragmento de código:

//do_while_example1

#include <stdio.h>

int main() {
    int count = 1;
    printf("Do-While loop: \n");
    
    do{
        printf("Loop runs...");
        }while(count<0);

    return 0;
}

Aquí está la salida.

Output

Do-While loop: 
Loop runs...

En el ejemplo anterior:

  • El valor de count es 1, y la condición de bucle es count < 0. Sin embargo, el bucle se ejecuta una vez aunque la condición de bucle sea inicialmente False.
  • Esto contrasta con un mientras bucle que solo se ejecuta si la condición de bucle es True en el primer lugar.
//while_example1

#include <stdio.h>

int main() {
    int count = 1;
    printf("While loop: \n");
    
    while(count<0){
        printf("Loop runs...");
        }

    return 0;
}

Como se mencionó, la condición de bucle, count < 0 is False inicialmente el count La variable se inicializa en 1. Entonces, al compilar y ejecutar el código anterior, vemos que la declaración en el cuerpo del ciclo while no se ejecuta.

Output

While loop: 
//loop body does not run!

While vs. Do-While: An Overview of the Differences

Echemos un vistazo más de cerca a las diferencias entre los bucles while y do-while.

Mientras vs Do-While: Una visión general de las diferencias

Considere este ejemplo:

//do_while_example2

#include <stdio.h>

int main() {
    int count = 1;
    printf("Do-while loop: \n");
    
    do{
       printf("%d\n",count);
       count++;
    }while(count<5);

    return 0;
}

En la celda de código anterior:

  • La count variable se inicializa a 1.
  • Usamos un ciclo do-while.
  • La count La variable se incrementa en 1 durante cada paso a través del bucle, y la condición de bucle se establece en count < 5.

Aquí hay una explicación visual de cómo ocurre la ejecución: cómo funciona el ciclo do-while y cómo verifica la condición del ciclo cuatro veces.

do-while-bucle-ejemplo
Output

Do-while loop: 
1
2
3
4

Si usa un bucle while en su lugar, esto es lo que tendríamos.

//while_example2

#include <stdio.h>

int main() {
    int count = 1;
    printf("While loop: \n");
    
    while(count<5){
       printf("%d\n",count);
       count++;
    };

    return 0;
}

La siguiente figura explica la ejecución del ciclo while; en este ejemplo, el ciclo while verifica la condición del ciclo cinco veces.

while-bucle-ejemplo
Output

While loop: 
1
2
3
4

Aunque las salidas para los bucles while y do-while anteriores son idénticas, existen algunas diferencias sutiles.

En un ciclo while, la verificación de la condición viene primero, seguida por el cuerpo del ciclo. Así que si quieres que se ejecute el ciclo K tiempos, debe haber exactamente k se ejecuta donde la condición de bucle es True. En número de iteración K + 1, la condición se convierte en False, y el control sale del bucle.

Por otro lado, si usa un bucle do-while: la condición de bucle se verifica solo para el K-ésimo tiempo después de que pasa K a través del bucle.

Entonces, ¿por qué es útil esta mejora marginal?🤔

Supongamos que la condición de bucle es computacionalmente costosa: por ejemplo, implica una llamada a una función recursiva, una operación matemática compleja, etc.

En tales casos, para K repeticiones del cuerpo del bucle, sería beneficioso usar un bucle do-while en su lugar.

Mientras que vs. Do-While Resumen

Tabulemos las diferencias clave que hemos aprendido. 👩‍🏫

Mientras bucleBucle Do-While
Comprobar la condición de bucle: antes de la ejecución del cuerpo del bucleComprobar la condición de bucle: después de la ejecución del cuerpo del bucle
Si la condición es False inicialmente, el cuerpo del bucle no se ejecuta.Si la condición es False inicialmente, el cuerpo del ciclo se ejecuta Exactamente una vez.
La condición de bucle se comprueba K veces para que pasen K por el bucle.La condición de bucle se verifica K-1 veces para K pases a través del bucle.
¿Cuándo usar el ciclo while?
– El bucle debe ejecutarse siempre que la condición sea verdadera
– Para bucles controlados por entrada
– Cuando la condición de bucle no es computacionalmente costosa
¿Cuándo usar un bucle do-while?
– El bucle debe ejecutarse al menos una vez para una condición de bucle inicialmente falsa
– Para bucles controlados por salida
– Cuando la condición de bucle es computacionalmente costosa

Emulating Do-While Loop Behavior in Python

De la sección anterior, tenemos las siguientes dos condiciones para emular el ciclo do-while:

  • Las declaraciones en el cuerpo del ciclo deben ejecutarse al menos una vez—independientemente de si la condición de bucle es True or False
  • La condición debe verificarse después de ejecutar declaraciones en el cuerpo del ciclo. Si la condición es False, el control debería salir del bucle: control de salida.

Instrucción de interrupción y bucle while infinito en Python

hacer-mientras-python

Puede definir un ciclo while infinito en Python, como se muestra a continuación.

while True:
    pass

# Instead of True, you can have any condition that is always True

while always-True-condition:
   pass

La break La sentencia se puede utilizar para salir del cuerpo de un bucle y transferir el control a la primera sentencia fuera del cuerpo del bucle.

while <condition>:
    if <some-condition>:
        break

En el primer ejemplo de ciclo do-while en C, la condición para continuar el ciclo es count < 0. Entonces, la condición para salir del ciclo es un valor de conteo de cero o mayor que cero, (count >= 0).

Aquí está la emulación del bucle do-while en Python:

count = 1
while True:
    print("Loop runs...")
    if(count >= 0):
        break

Python Do-While Loop Examples

Revisaremos los ejemplos de la sección anterior y los reescribiremos en Python emulando el bucle do while.

#1. Repasemos el ejemplo: imprimiendo valores de la count variable cuando count es menos de cinco.

Sabemos cómo definir un ciclo infinito para que el cuerpo del ciclo se ejecute al menos una vez.

El bucle debe continuar siempre que la cuenta sea inferior a cinco. Por lo tanto, cuando la cuenta llega a cinco, debemos salir del bucle. Asi que count == 5 es la condición de control de salida.

Poniéndolo juntos, tenemos:

count = 1
while True:
  print(f"Count is {count}")
  count += 1
  if count==5:
    break
Output

Count is 1
Count is 2
Count is 3
Count is 4

#2. También podemos reescribir el juego de adivinanzas como una construcción do-while de Python.

En el juego de adivinanzas de números, validamos las conjeturas de un usuario contra un número secreto predefinido. El usuario debe adivinar el número secreto dentro de un cierto número de intentos máximos permitidos, por ejemplo, max_guesses.

El código debe solicitar al usuario que ingrese, independientemente de si su suposición es correcta o incorrecta. Podemos hacer esto usando un ciclo while infinito.

Entonces, ¿cuándo deberíamos salir del círculo?

El control debe salir del ciclo cuando ocurre cualquiera de los siguientes:

  1. Cuando el usuario ha adivinado el número
  2. Cuando el usuario aún no ha adivinado el número, pero ha agotado el número de intentos disponibles. El número de conjeturas incorrectas por parte del usuario = max_guesses.

La siguiente celda de código muestra cómo podemos hacerlo.

import random

low, high = 5,50

secret_number = random.choice(range(low,high))

max_guesses = 10

num_guesses = 0

while True:
    guess = int(input("\nGuess a number:"))
    num_guesses += 1
    
    conditions = [num_guesses==max_guesses,guess==secret_number]
    
    if any(conditions):
        break

En lugar de salir del círculo, podemos agregar explicaciones print() declaraciones cuando nos encontramos con cada una de las condiciones anteriores y luego salimos del bucle.

import random

low, high = 5,50

secret_number = random.choice(range(low,high))

print(secret_number)

max_guesses = 10

num_guesses = 0

while True:
    guess = int(input("\nGuess a number:"))
    num_guesses += 1
    
    if guess==secret_number:
        print("Congrats, you guessed it right!")
        break
    if num_guesses==max_guesses:
        print("Sorry, you have no more guesses left!")
        break

A continuación se muestran dos salidas de muestra.

En esta salida de muestra, la instrucción break sale del ciclo cuando el usuario adivina el número secreto correctamente.

# Sample output when secret_number = 43 and user gets it right!

Guess a number:4

Guess a number:3

Guess a number:43
Congrats, you guessed it right!

Aquí hay otro resultado de muestra cuando el usuario alcanza el número máximo de conjeturas disponibles pero no logra adivinar el número secreto correctamente.

# Sample output when secret_number = 33 and user fails to guess it right!

Guess a number:3

Guess a number:15

Guess a number:21

Guess a number:50

Guess a number:17

Guess a number:6

Guess a number:18

Guess a number:5

Guess a number:12

Guess a number:43
Sorry, you have no more guesses left!

Conclusión

Espero que este tutorial te haya ayudado a comprender cómo emular un bucle do-while en Python.

Aquí están las conclusiones clave:

  • Use un ciclo infinito para asegurarse de que el cuerpo del ciclo se ejecute al menos una vez. Podría ser un ciclo infinito trivial como while True, o podría ser tiempo, tal que la condición siempre es True.
  • Verifique el salida condición dentro del bucle y utilizar el romper declaración para salir del ciclo bajo una condición específica.

A continuación, aprenda a usar para bucles y el función enumerar() en Python.

Gracias a nuestros patrocinadores
Más lecturas interesantes sobre el desarrollo
Impulse su negocio
Algunas de las herramientas y servicios para ayudar a que su negocio crezca.
  • Invicti utiliza Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en cuestión de horas.
    Prueba Invicti
  • Web scraping, proxy residencial, administrador de proxy, desbloqueador web, rastreador de motores de búsqueda y todo lo que necesita para recopilar datos web.
    Prueba Brightdata
  • Semrush es una solución de marketing digital todo en uno con más de 50 herramientas en SEO, redes sociales y marketing de contenido.
    Prueba Semrush
  • Intruder es un escáner de vulnerabilidades en línea que encuentra debilidades de ciberseguridad en su infraestructura, para evitar costosas filtraciones de datos.
    Intente Intruder