Pular para o conteúdo
Praticar: 7 fichas
1ª unidadeLição 6 de 7~10 min de leitura7 fichas para praticar

Laço dentro de laço

Para cada volta do laço de fora, o laço de dentro roda inteiro, do começo ao fim. É só isso, mas é fácil se perder: por isso o relógio.

Nesta lição0 de 3 vistas
  1. 1Regra 1: o de dentro recomeça
  2. 2Regra 2: o total é a multiplicação
  3. 3Regra 3: onde fica o print

O ponteiro das horas é o laço de fora; o dos minutos, o de dentro. Os minutos dão a volta inteira antes de a hora andar um passo.

minuto 1minuto 2minuto 3minuto 4
hora 1
hora 2
hora 3
for hora in range(1, 4): # de fora
for minuto in range(1, 5): # de dentro
print(hora, minuto)
Aperte Próximo minuto. Repare que o minuto anda primeiro, e a hora só muda quando o minuto termina a volta.
1

Regra 1: o de dentro recomeça

A cada volta do laço de fora

A variável do laço de dentro precisa voltar ao valor inicial dentro do laço de fora. É o erro número um. Compare as saídas:

Certoj = 1 dentro do laço de fora
i = 1
while i <= 3:
j = 1
while j <= 3:
print(i, j)
j = j + 1
i = i + 1
saída1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3
Erradoj = 1 antes de tudo
i = 1
j = 1
while i <= 3:
while j <= 3:
print(i, j)
j = j + 1
i = i + 1
saída1 1 1 2 1 3

No errado, depois da primeira volta de fora o j já vale 4. Na segunda volta, j <= 3 é falso logo de cara e o laço de dentro não roda mais.

2

Regra 2: o total é a multiplicação

Voltas de fora vezes voltas de dentro

Se o de fora dá 3 voltas e o de dentro dá 4 a cada uma, o código de dentro roda 3 × 4 = 12 vezes. Isso ajuda a conferir: uma tabuada de 1 a 10 para os números de 1 a 10 imprime 100 linhas.

Quantas vezes o print roda?

Conte sem rodar: voltas de fora vezes voltas de dentro.

3 perguntas
  1. cont = 0
    for i in range(3):
    for j in range(4):
    cont = cont + 1
    print(cont)
  2. cont = 0
    for i in range(1, 6):
    for j in range(1, 11):
    cont = cont + 1
    print(cont)
  3. cont = 0
    for i in range(1, 4):
    for j in range(1, i + 1):
    cont = cont + 1
    print(cont)
3

Regra 3: onde fica o print

decide o que aparece na tela

O mesmo desenho de asteriscos com o print() (que pula linha) em três lugares:

Dentro do de foraum quadrado 3 × 3
for i in range(1, 4):
for j in range(1, 4):
print('*', end='')
print()
saída*** *** ***
Dentro do de dentroum asterisco por linha
for i in range(1, 4):
for j in range(1, 4):
print('*', end='')
print()
saída* * * * * * * * *
Depois dos doistudo numa linha só
for i in range(1, 4):
for j in range(1, 4):
print('*', end='')
print()
saída*********

Erros que mais aparecem na prova

5 erros
Zerar a variável de dentro fora do laço de fora

O laço de dentro só roda na primeira volta. O j = 1 (ou o contador de dentro) vai logo depois do while de fora.

Usar a mesma variável nos dois laços

Com i nos dois, o de dentro bagunça o de fora. Use nomes diferentes: i e j, linha e coluna.

Indentação do print

Um recuo a mais ou a menos muda tudo: dentro do de dentro, dentro do de fora ou depois dos dois.

Acumulador zerado no lugar errado

Se a soma é por linha, ela zera dentro do laço de fora. Se é do total, zera antes de tudo.

Achar que os laços andam juntos

Eles não andam lado a lado: o de dentro dá a volta inteira antes de o de fora andar um passo.

Próxima lição: Pensamento computacional ›

Complemento, não atalho. O laboratório ajuda a entender a lógica. Para fixar de verdade, escreva do zero no Thonny ou no seu editor.