La sentència while
ens permet executar més d'un cop un mateix bloc
de sentències. L'execució es realitzarà mentre una certa condició sigui certa.
Les sentències while
són un exemple del que s'anomena sentències
repetitives o bucles.
La sentència while
permet, opcionalment, afegir una clàusula else
.
Example 6.2. Ús de la sentència while
#!/usr/bin/python # Filename: while.py number = 23 running = True while running: guess = int(raw_input('Enter an integer : ')) if guess == number: print 'Congratulations, you guessed it.' running = False # això farà que el bucle finalitzi a la propera volta elif guess < number: print 'No, it is a little higher than that.' else: print 'No, it is a little lower than that.' else: print 'The while loop is over.' # aqui hi podem afegir el que vulguem print 'Done'
$ python while.py Enter an integer : 50 No, it is a little lower than that. Enter an integer : 22 No, it is a little higher than that. Enter an integer : 23 Congratulations, you guessed it. The while loop is over. Done
A aquest programa hem continuat el joc d'endevinar de l'exemple de l'estructura if. Com a millora tenim que l'usuari pot fer tants intents com li calguin fins que aconsegueixi encertar el número, sense necessitat d'haver de tornar a executar el programa. Aquest és un ús típic del while
.
En aquest cas, realitzem la lectura i la comprovació dins el bloc
del while
. Assignem a cert la variable booleana
running
abans de començar el bucle.
Primer es comprova si running
és cert i a continuació
es passa a processar el bloc while.
Un cop executat el bloc, tornem a comprovar la condició. Si un altre cop
running
resulta ser cert, es torna a executar el bloc
del mentre. Altrament continuem executant el bloc del else
i finalment continuem a la següent sentència.
El bloc else
s'executa quan la condició del bucle
while
passa a ser falsa, cosa que pot passar fins i tot el
primer cop que es comprova la condició.
Així, el bloc del else
sempre s'executa, excepte quan
hem construït un while
que no acaba mai!
Les paraules reservades True
i False
són els valors del tipus de dades booleà, i els podem considerar equivalents
als valors 1
i 0
respectivament.
Per llegibilitat, però, és important que els fem servir en comptes dels
valors numèrics.
El bloc else
és redundant, ja que podem posar aquestes sentències
al mateix bloc del while
i a continuació d'aquest, obtenint el mateix
efecte.
Recordem que disposem de la clàusula else
pel bucle while
.