Há apenas dois tipos de laços em Python: for e while. O primeiro tipo, mais freqüentemente utilizado, percorre uma seqüência em ordem, a cada ciclo substituindo a variável especificada por um dos elementos. Por exemplo:
>>> jan_ken_pon = ["pedra", "papel", "cenoura"]
>>> for item in jan_ken_pon:
... print item
...
pedra
papel
cenoura
A cada iteração, item recebe o valor de um elemento da seqüência. Para efetuar uma laço com um número fixo de iterações, costuma-se usar o for em conjunto com a função range, que gera seqüências de números:
>>> for i in range(1,4):
... print "%da volta" % i
...
1a volta
2a volta
3a volta
>>> dict = {"batata": 500, "abóbora": 1200,
... "cebola": 800}
>>> for e in dict.keys():
... print "Item: %8s Peso: %8s" % (e, dict[e])
Item: cebola Peso: 800
Item: batata Peso: 500
Item: abóbora Peso: 1200
Note que porque o dicionário em si não possui um conceito de ordem, a lista que resulta do método keys() possui ordenação arbitrária. Por este motivo, no exemplo acima, o laço não segue a declaração do dicionário.
A forma geral do laço for é:
for variável in seqüência:
# bloco de código
else:
# bloco executado na ausência de um break
Note a presença da cláusula else. Esta cláusula é executada quando a saída do laço não for determinada por uma instrução break. Um exemplo clarifica este mecanismo:
valores = [2, 4, 5, 2, -1]
for i in valores:
if i < 0:
print "Negativo encontrado: %d" % i
break
else:
print "Nenhum negativo encontrado"