Repetições

As repetições permitem executar um bloco de código múltiplas vezes.

O Python possui 2 tipos de repetições: repetições while e repetições for.

Sintaxe:

while condição:
	bloco código 1
[else:]
    bloco código 2

A repetição while repete o bloco de código 1 enquanto a condição fôr True.

Se existir a opção else, o bloco de código desta opção será executado quando a condição do while se tornar falsa.

No entanto, se a repetição while terminar por ação de um break, o código da opção else não é executado:

Exemplo 1:

nr = 1

#repete o bloco de código enquanto a condição nr < 6 fôr True:
while nr < 6:
	print(nr )
	nr+=1

Output:

1
2
3
4
5

Exemplo 2:

nr=0
while nr<6:
    nr+=1
    print("nr: ", nr)
else:
    print("Condição de paragem falsa")

print("Fim da repetição")

Output:

nr: 1
nr: 2
nr: 3
nr: 4
nr: 5
nr: 6
Condição de paragem falsa
Fim da repetição

Exemplo 3:

nr=0
while nr<6:
    nr+=1
    if(nr==3):
        break
    print("nr: ", nr)
else:
    print("Condição de paragem falsa")

print("Fim da repetição")

Output:

nr: 1
nr: 2
Fim da repetição

Exemplo 4:

while 1: #loop infinito
	nr = int( input("Digite um nr: ") )
	print( "nr: ", nr )

No exemplo acima, temos um loop infinito que só termina se houver uma condição com break ou por CTRL-C.

Sintaxe:

for var in sequencia:
	bloco código 1
[else:]
	bloco código 2

Em Python, as repetições for iteram sobre os elementos de uma sequência na ordem em que esses elementos aparecem na sequência.

Assim, de acordo com a sintaxe, a variável var vai assumindo, em cada iteração, o valor de cada elemento da sequência, e o código no corpo do for é executado.

Exemplo 1:

nomes = ["Ana", "Rita", "Luisa"]

#iteração com for sobre uma lista:
for name in nomes:
    print(name)

Output:

Ana
Rita
Luisa

Exemplo 2:

nomes = "Ana Rita"

#iteração com for sobre uma string:
for ch in nomes:
    print(ch)

Output:

A
n
a

R
i
t
a

A função range()

A função range() em Python é uma função interna usada para gerar sequências de números. Ela é comumente utilizada em repetições, como repetições for, para controlar iterações.

A sintaxe da função range() é:

range(start, stop, step)

start: Opcional. O número inicial da sequência. 0 se omitido.

stop: Obrigatório. O ponto final da sequência (exclusive).

step: Opcional. O incremento entre cada número na sequência. 1 se omitido.

Exemplos:

# Percorre os valores de 2 a 5, com um incremento de 1:
for i in range(2, 6): 
    print(i)

Output:

2
3
4
5

# Percorre os valores de 2 a 8, com um incremento de 2:
for i in range(2, 9, 2):  
    print(i)

Output:

2
4
6
8

# Percorre os valores de 10 a 2, com um incremento de -2:
for i in range(10, 0, -2):  
    print(i)

Output:

10
8
6
4
2

# Percorre os valores 0-5:
for n in range(6):
    print(n)

Output:

0
1
2
3
4
5

Exemplo 2:

nomes = ["Ana", "Rita", "Luisa"]

for i in range(  len(nomes) ):
    print(nomes[i])

Output:

Ana
Rita
Luisa

A função range() devolve uma sequência de números entre 0 e 2, uma vez que a função len() devolve 3, o tamanho da lista ‘nomes’. Em cada iteração a variável i assume os valores de 0 a 2 o que corresponde aos indíces dos elementos da lista.

# Converte a sequência gerada pela função range() numa lista com a função list():
lista = list(range(6))
print(lista)

Output:

[0, 1, 2, 3, 4, 5]

A instrução break termina e execução da repetição saltando a execução do programa para a instrução imediatamente a seguir a esta:

nomes = ["Ana", "Rita", "Luisa"]

for i in range(  len(nomes) ):
    print(nomes[i])
    if(i==1):
        break
else:
    print("terminou")
print("Instrução a seguir")

Output:

Ana
Rita
Instrução a seguir

A instrução continue faz com que o programa passe de imediato para a iteração a seguir:

nomes = ["Ana", "Rita", "Luisa"]

for i in range(  len(nomes) ):
    if(i==1):
        continue
    print(nomes[i])
else:
    print("terminou")

Output:

Ana
Luisa
terminou

A instrução pass não faz nada. A única diferença entre um comentário e a pass é que o compilador não ignora esta última.

Normalmente, a instrução pass é usada durante a fase de desenvolvimento em que temos estruturas como repetições ou funções cujos corpos não podem estar vazios e que serão completados mais tarde. Colocando a instrução pass o programa está correto em termos sintáticos e essas estruturas podem ser completadas mais tarde.

Exemplo:

nomes = ["Ana", "Rita", "Luisa"]
for nome in nomes:
    #O corpo do while vai ser completado mais tarde, 
    #substituindo a instrução pass pelo código definitivo
    pass

print("Fim da repetição")