A Byte of Python

La sentencia while

La sentencia while permite ejecutar repetidamente un bloque mientras la condición sea verdadera. Una sentencia while es un ejemplo de lo que denominamos declaración repetitiva, adicionalmente, puede emplear una cláusula opcional else.

Usando la sentencia while

Example 6.3. Usando la sentencia while

#!/usr/bin/python
# Filename : while.py

numero = 23
detener = False

while not detener:
        adivina = int(raw_input('Ingrese un entero : '))

        if adivina == numero:
                print 'Felicitaciones, haz adivinado!.'
                detener = True # Esto causa que el loop se detenga
        elif adivina < numero:
                print 'No, es un numero mayor.'
        else: # debes adivinar
                print 'No, es un numero menor.'
else:
        print 'El ciclo while ha terminado.'
        print 'Puedo hacer lo que quiero aqui.'

print 'Hecho.'
        

Resultado

$ python while.py
Ingrese un entero : 50
No, es un numero menor.
Ingrese un entero : 22
No, es un numero mayor.
Ingrese un entero : 23
Felicitaciones, haz adivinado.
El ciclo while ha terminado.
Puedo hacer lo que quiero aqui.
Hecho.
        

Cómo Trabaja?

Aquí, todavía estamos ejecutando el juego de adivinar, pero la ventaja es que al usuario se le permite seguir intentando hasta que lo haga correctamente, no hay necesidad de ejecutar en varias ocasiones el programa para conseguirlo, esto demuestra el conveniente uso de la sentencia while.

Movemos las declaraciones raw_input e if hacia el interior del bucle while y fijamos la variable detener a False antes de iniciarlo. Primero, comprobamos que la variable detener contiene False, procedemos a ejecutar el correspondiente bloque while; después de que se ejecuta el bloque, la condición es comprobada otra vez, donde -en este caso- es la variable detener. Si es falsa, ejecutamos el bloque while otra vez, de lo contrario, continuamos ejecutando el bloque else opcional si existiera, y nos pasamos a la sentencia siguiente en el bloque que contiene la sentencia while.

El bloque else es ejecutado cuando el bucle while se convierte en True, esta podría ser la primera vez que la condición es comprobada. Si hay una sentencia else para un bucle while, se ejecutará siempre, a menos que tengas uno que se encuentre en una forma cíclica sin poder romperla!

Las variables especiales True y False asignan simplemente el valor 1 y 0 respectivamente. Usa True y False en vez de 1 y 0 dondequiera que tenga más sentido, como es el caso del ejemplo mostrado arriba.

El bloque else es realmente redundante, puesto que puedes poner esas sentencias en el mismo bloque que contiene la sentencia while, ya que tendría el mismo efecto.

Nota para Programadores

Recuerda que puedes tener una claúsula else para el bucle while.