A Byte of Python

La sentència while

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.

Ús de la sentència while

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'
				
				

Sortida

				
$ 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
				
				

Com funciona

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.

Nota pels programadors de C/C++

Recordem que disposem de la clàusula else pel bucle while.