18. Sentencia while

La sentencia while permite ejecutar un bloque de código varias veces mientras se cumple una condición.

Es un tipo de bucle con condición. Se utiliza cuando no sabemos exactamente cuántas veces se requiere ejecutar un bloque de código, pero si que sabemos que condición se tiene que cumplir.

Ejemplo de programa que suma precios mientras que el total sea menor de 1000:

suma = 0

while suma < 1000:
    precio = input('Introduce un precio: ')
    suma = suma + int(precio)

print('La suma de todos los precios es mayor de 1000')

Sentencia while True

También se puede utilizar la sentencia while con una condición siempre verdadera para hacer un bucle que se ejecute para siempre:

while True:
    print('Hola, mundo!')

Para poder parar el funcionamiento de este programa hay que presionar las teclas [Control] + [C].

El programa anterior es poco funcional porque no tiene una condición para poder detenerse. Ahora veremos otro ejemplo con la sentencia while que se detiene gracias a una sentencia break después de escribir la palabra 'fin':

while True:
    nombre = input('Escribe tu nombre: ')
    if nombre == 'fin':
        break
    print('Hola', nombre)

Esta construcción es equivalente a decir que se ejecute un bloque de instrucciones hasta que se cumpla una condición.

Ejercicios

  1. Escribe un programa con la sentencia while que vaya imprimiendo todos los números desde el 0 hasta el 10.

    Pista:

    contador = 0
    while ... :
        ...
        contador = contador + 1
    
  2. Modifica el programa anterior para que imprima todos los números desde el 10 hasta el 0.

  3. Escribe un programa que sume todos los números enteros desde el 1 y que se detenga cuando la suma sea mayor o igual a 1000.

    Al final debe escribir desde qué número hasta qué número ha sumado y cuánto vale la suma.

    Pista:

    suma = 0
    contador = 1
    while ... :
        ...
    
  4. Escribe un programa que se repita continuamente hasta que se introduzca por el teclado la letra 'n' a la pregunta '¿Quieres continuar? (S/n)'.

    Pista:

    while True:
        respuesta = input( ... )
    
  5. Escribe un programa que imprima la sucesión de Fibonacci hasta el número 1000.

    Pista:

    a = 0
    b = 1
    while ... :
        print(b)
        suma = a + b
        a = b
        b = suma
    
  6. Escribe un programa que juegue con el usuario a adivinar un número. Si el número introducido es más alto que el número secreto, debe imprimir una pista diciendo 'Demasiado alto'. Igualmente debe imprimir una pista 'Demasiado bajo' para los números menores que el número secreto.

    Cuando el usuario acierte el número secreto, el programa debe imprimir 'Acertaste' y detenerse.

    Pista:

    import random
    numero_secreto = random.randint(1, 100)
    
    while True:
        ...