Existem dois tipos de loops em Python, for e while.
Loops for iteram sobre uma sequência dada. Aqui está um exemplo:
primes = [2, 3, 5, 7]
for prime in primes:
print(prime)
Loops for podem iterar sobre uma sequência de números usando as funções "range" e "xrange". A diferença entre range e xrange é que a função range retorna uma nova lista com números daquele intervalo especificado, enquanto xrange retorna um iterador, que é mais eficiente. (Python 3 usa a função range, que age como xrange). Note que a função range é baseada em zero.
# Imprime os números 0,1,2,3,4
for x in range(5):
print(x)
# Imprime 3,4,5
for x in range(3, 6):
print(x)
# Imprime 3,5,7
for x in range(3, 8, 2):
print(x)
Loops while repetem enquanto uma certa condição booleana é satisfeita. Por exemplo:
# Imprime 0,1,2,3,4
count = 0
while count < 5:
print(count)
count += 1 # Isso é o mesmo que count = count + 1
break é usado para sair de um loop for ou de um loop while, enquanto continue é usado para pular o bloco atual e retornar à instrução "for" ou "while". Alguns exemplos:
# Imprime 0,1,2,3,4
count = 0
while True:
print(count)
count += 1
if count >= 5:
break
# Imprime apenas os números ímpares - 1,3,5,7,9
for x in range(10):
# Verifica se x é par
if x % 2 == 0:
continue
print(x)
Diferente de linguagens como C, CPP, podemos usar else em loops. Quando a condição do loop da instrução "for" ou "while" falha, então a parte do código em "else" é executada. Se uma instrução break for executada dentro do loop for, então a parte "else" é pulada. Note que a parte "else" é executada mesmo que haja uma instrução continue.
Aqui estão alguns exemplos:
# Imprime 0,1,2,3,4 e então imprime "count value reached 5"
count=0
while(count<5):
print(count)
count +=1
else:
print("count value reached %d" %(count))
# Imprime 1,2,3,4
for i in range(1, 10):
if(i%5==0):
break
print(i)
else:
print("isso não é impresso porque o loop for é terminado por causa do break mas não por falha na condição")
Percorra e imprima todos os números pares da lista de números na mesma ordem em que são recebidos. Não imprima nenhum número que venha após 237 na sequência.