O segundo tipo de laço, while, é utilizado quando necessitamos fazer um teste a cada iteração do laço.
while condição:
# bloco de código
else:
# bloco executado na ausência de um break
Como o laço for, o while possui uma cláusula else. Um exemplo do uso de while segue:
>>> m = 3 * 19
>>> n = 5 * 13
>>> contador = 0
>>> while m < n:
... m = n / 0.5
... n = m / 0.5
... contador = contador + 1
...
>>> print "Iteramos %d vezes." % contador
Iteramos 510 vezes.
Não há uma instrução especial para efetuar um laço com teste ao final da iteração (como o laço do ... while() em C), mas pode-se usar um while infinito -- usando uma condição verdadeira, fixa -- em combinação com um teste e break internos:
>>> l = ["a", "b", "c"]
>>> i = len(l) - 1
>>> while True:
... print l[i]
... i = i - 1
... if i < 0:
... break
...
c
b
a
As estruturas if e while utilizam condições lógicas para controle, avaliando-as de maneira booleana. Como qualquer valor ou expressão pode ser usado como condição, é importante entender qual o mecanismo de avaliação da linguagem.
Em Python, falso é denotado:
Qualquer outro valor simples é considerado verdadeiro. Instâncias podem definir regras mais complexas para avaliação; para detalhes consulte a seção Basic customization do manual de referência Python.