Estructuras de control repetitivas: while

La instrucción while ejecuta una secuencia de instrucciones mientras una condición sea verdadera.

while <condición>:
    <instrucciones>
  • Al ejecutarse esta instrucción, la condición es evaluada. Si la condición resulta verdadera, se ejecuta una vez la secuencia de instrucciones que forman el cuerpo del ciclo. Al finalizar la ejecución del cuerpo del ciclo se vuelve a evaluar la condición y, si es verdadera, la ejecución se repite. Estos pasos se repiten mientras la condición sea verdadera.
  • Se puede dar la circunstancia que las instrucciones del bucle no se ejecuten nunca, si al evaluar por primera vez la condición resulta ser falsa.
  • Si la condición siempre es verdadera, al ejecutar esta instrucción se produce un ciclo infinito. A fin de evitarlo, las instrucciones del cuerpo del ciclo deben contener alguna instrucción que modifique la o las variables involucradas en la condición, de modo que ésta sea falsificada en algún momento y así finalice la ejecución del ciclo.

Ejemplo

Crea un programa que pida al usuario una contraseña, de forma repetitiva mientras que no introduzca “asdasd”. Cuando finalmente escriba la contraseña correcta, se le dirá “Bienvenido” y terminará el programa.

secreto = "asdasd"
clave = input("Dime la clave:")
while clave != secreto:
    print("Clave incorrecta!!!")
    clave = input("Dime la clave:")
print("Bienvenido!!!")
print("Programa terminado")

Instrucciones break y continue

break

Termina la ejecución del bucle, además no ejecuta el bloque de instrucciones.

Veamos un programa similar al anterior pero que tiene otra condición de salida:

secreto = "asdasd"
clave = input("Dime la clave:")
while clave != secreto:
    print("Clave incorrecta!!!")
    otra = input("¿Quieres introducir otra clave (S/N)?:")
    if otra.upper()=="N":
        break;
    clave = input("Dime la clave:")
if clave == secreto:
    print("Bienvenido!!!")
print("Programa terminado")

continue

Deja de ejecutar las restantes instrucciones del bucle y vuelve a iterar.

Aunque podemos de hacerlo de varias formas, vamos a usar la instrucción continue para mostrar los número pares del 1 al 10:

cont = 0
while cont<10:
    cont = cont + 1
    if cont % 2 != 0:
        continue
    print(cont)

Instrucción Repetir - Hasta Que

En pseudocódigo podemos encontrar una instrucción Repetir - Hasta Que que nos permite ejecutar una secuencia de instrucciones hasta que la condición sea verdadera. Con esta estructura la secuencia de instrucciones que forma el cuerpo del ciclo se ejecuta una vez y luego se evalúa la condición. Esta estructura de control la podemos encontrar en muchos lenguajes de programación, pero en Python no existe. Podemos simular el comportamiento de esta estructura utilizando un bucle con while y con la instrucción break:

Ejemplo

Crea un programa que pida al usuario una contraseña, de forma repetitiva mientras que no introduzca “asdasd”. Cuando finalmente escriba la contraseña correcta, se le dirá “Bienvenido” y terminará el programa.

En pseudocódigo:

Proceso login
    Definir secreto, clave como cadena;
    secreto <- "asdasd";
    Repetir
        Escribir "Dime la clave:";
        Leer clave;
        Si clave<>secreto Entonces
            Escribir "Clave incorrecta!!!";
        FinSi
    Hasta Que clave=secreto
    Escribir "Bienvenido!!!";
    Escribir "Programa terminado";
FinProceso

En python3:

secreto = "asdasd"
while True:
    clave = input("Dime la clave:")
    if clave != secreto:
        print("Clave incorrecta!!!")
    if clave == secreto:
        break;
print("Bienvenido!!!")
print("Programa terminado")