
Passo 1 de 7
Distinguir quantidade de ocorrências e soma de valores
Reconheça quando usar um contador, um acumulador de soma ou os dois para responder a perguntas diferentes sobre os mesmos dados.
Trilha de aprendizado · Nível 2 · Tutorial 7
Contar ocorrências e somar valores durante uma repetição, verificando a evolução das variáveis por rastreamento manual.
Distinguir quantidade de ocorrências e soma de valores
Reconheça quando usar um contador, um acumulador de soma ou os dois para responder a perguntas diferentes sobre os mesmos dados. 2 min
Inicializar antes e atualizar dentro do laço
Organize a inicialização, as atualizações e a saída para preservar a contagem e a soma entre as iterações. 3 min
Contar e somar somente quando a condição for atendida
Mantenha contagem e soma no mesmo bloco condicional e explique por que valores rejeitados preservam o resultado parcial. 3 min
Rastrear as variáveis a cada iteração
Registre o estado das variáveis antes e depois de cada passagem pelo laço e encontre o ponto em que um resultado começa a sair do esperado. 4 min
Conferir nenhuma, uma e várias ocorrências
Confira casos pequenos e descubra por que uma soma igual a zero não significa ausência de ocorrências. 2 min
Calcular a média com uma contagem válida
Calcule a média depois do laço e use a quantidade de ocorrências para decidir se há dados para dividir. 2 min
Aplicar o padrão e conferir o programa completo
Complete um programa no seu computador, teste três cenários e justifique os resultados com um rastreamento manual. 4 min

Passo 1 de 7
Reconheça quando usar um contador, um acumulador de soma ou os dois para responder a perguntas diferentes sobre os mesmos dados.
Um laço pode processar vários valores, mas o resultado depende da pergunta.
Imagine três pacotes com 2, 5 e 2 peças:

Contar dá o mesmo peso a cada ocorrência; somar considera o valor de cada uma.
Dica
Neste exemplo, quantidade pode nomear o contador de pacotes, e total pode nomear o acumulador de peças. Se o problema pedir as duas respostas, você precisará dos dois registros. Os pacotes com 2 peças contam separadamente, mesmo tendo valores iguais.
Uma pessoa registra a distância de cada caminhada. Associe cada pergunta ao registro necessário.
Toque em um item e depois no par correspondente.
Três entregas trouxeram 4, 4 e 7 caixas. Se quantidade registra o número de entregas e total registra a soma das caixas, quais são os resultados?

Passo 2 de 7
Organize a inicialização, as atualizações e a saída para preservar a contagem e a soma entre as iterações.
Comece com quantidade = 0 e total = 0 antes do laço. Dentro dele, acrescente 1 à quantidade e o valor atual ao total. Assim, cada passagem aproveita o resultado parcial da anterior. Deixe a apresentação do resultado final depois do laço, sem recuo.
Ao terminar, o programa mostra quantidade 3 e total 9.
quantidade = 0
total = 0
for valor in range(2, 5):
quantidade = quantidade + 1
total = total + valor
print(f"Quantidade: {quantidade}")
print(f"Total: {total}")
A seta de repetição passa pelas atualizações, mas não volta à inicialização.
Coloque os blocos na ordem necessária para contar e somar todos os valores processados.
Nos exemplos numéricos, += é uma forma abreviada de somar e guardar o resultado na mesma variável:
quantidade += 1 equivale a quantidade = quantidade + 1.total += valor equivale a total = total + valor.A forma abreviada também preserva o que já estava guardado.
Complete para contar uma ocorrência: quantidade += ___.
O número atual está em valor. Complete para somá-lo ao resultado parcial: total += ___.
Observe a posição de total = 0.
quantidade = 0
for valor in range(2, 5):
total = 0
quantidade += 1
total += valor
print(f"Quantidade: {quantidade}")
print(f"Total: {total}")Sem executar, qual total esse programa apresenta? Explique por quê e diga qual linha deve mudar de lugar para que ele some 2, 3 e 4 corretamente.
Escreva pelo menos 15 caracteres (0/15).

Passo 3 de 7
Mantenha contagem e soma no mesmo bloco condicional e explique por que valores rejeitados preservam o resultado parcial.
Para contar e somar apenas valores maiores ou iguais a 2, coloque as duas atualizações dentro do mesmo if.
Se a condição for verdadeira, o valor participa da contagem e da soma. Se for falsa, nenhuma das duas atualizações acontece: quantidade e total mantêm o que já estava guardado.
O laço faz 4 iterações, mas aceita apenas 3 valores: 2, 3 e 4. A saída é 3 9.
quantidade = 0
total = 0
for valor in range(1, 5):
if valor >= 2:
quantidade += 1
total += valor
print(quantidade, total)
Uma iteração sempre processa um valor, mas só uma ocorrência aceita altera a contagem e a soma.
Considere quantidade e total já inicializados com zero antes do laço. Qual trecho conta e soma somente os valores maiores ou iguais a 2?
O laço percorre 4, 3, 2 e 1, nessa ordem. As duas lacunas devem ser substituídas por instruções completas.
quantidade = 0
total = 0
for valor in range(4, 0, -1):
if valor >= 2:
___
___
print(quantidade, total)Substitua as duas lacunas e escreva o bloco if completo, mantendo o recuo das atualizações.
Depois, explique: após aceitar 4, 3 e 2, quais são os valores de quantidade e total? O que acontece com eles quando o laço chega ao valor 1, e por quê?
Escreva pelo menos 50 caracteres (0/50).

Passo 4 de 7
Registre o estado das variáveis antes e depois de cada passagem pelo laço e encontre o ponto em que um resultado começa a sair do esperado.
Rastrear é acompanhar a execução no papel. Primeiro, anote o estado inicial: quantidade = 0 e total = 0.
Depois, faça uma linha por iteração com: valor atual, resultado da condição e valores de quantidade e total antes e depois das atualizações. Registre também as passagens em que a condição é falsa.
Acompanhe as duas primeiras iterações na imagem.
quantidade = 0
total = 0
for valor in range(1, 5):
if valor >= 2:
quantidade += 1
total += valor
print(quantidade, total)
Quando a condição é falsa, a linha existe, mas os valores não mudam. O “depois” de uma linha vira o “antes” da próxima.
Na tabela, cada par mostra antes → depois. Complete A e B seguindo as atualizações do código anterior.
Estado inicial: quantidade = 0, total = 0.
| Iteração | Valor | valor >= 2 | Quantidade | Total |
|---|---|---|---|---|
| 1 | 1 | Falso | 0 → 0 | 0 → 0 |
| 2 | 2 | Verdadeiro | 0 → 1 | 0 → 2 |
| 3 | 3 | Verdadeiro | 1 → 2 | 2 → A |
| 4 | 4 | Verdadeiro | 2 → B | A → 9 |
Qual número substitui A?
Qual número substitui B?
O código abaixo deveria contar e somar apenas valores maiores ou iguais a 2, mas há uma atualização fora do lugar. Para localizar o erro, compare o estado esperado com o produzido pelo código, começando pela primeira iteração.
quantidade = 0
total = 0
for valor in range(1, 5):
quantidade += 1
if valor >= 2:
total += valor
print(quantidade, total)Exemplo
A condição é falsa. O esperado é manter quantidade = 0 e total = 0.
Mas o código executa quantidade += 1 antes do teste: a quantidade passa a 1, enquanto o total continua 0. Essa é a primeira divergência.
A correção é mover quantidade += 1 para dentro do if, junto da soma. Procurar a primeira linha diferente ajuda a identificar a instrução responsável, em vez de olhar apenas a saída final.
Faça a previsão manual antes de qualquer execução.
quantidade = 0
total = 0
for valor in range(-1, 3):
if valor > 0:
quantidade += 1
total += valor
print(quantidade, total)Registre o estado inicial e monte a tabela com uma linha por iteração. Use as colunas indicadas no campo de resposta. Depois, justifique uma linha sem atualização e escreva a saída final do programa.
Escreva pelo menos 60 caracteres (0/60).

Passo 5 de 7
Confira casos pequenos e descubra por que uma soma igual a zero não significa ausência de ocorrências.
Neste programa, apenas valores maiores ou iguais a zero entram na contagem e na soma.
Se o intervalo estiver vazio, o corpo do laço não executa. Se houver valores, mas todos forem rejeitados, o laço executa sem atualizar as variáveis. Nos dois casos, quantidade e total permanecem com o valor inicial: zero.
Altere apenas inicio e fim para experimentar os casos da próxima tela.
inicio = 1
fim = 1
quantidade = 0
total = 0
for valor in range(inicio, fim):
if valor >= 0:
quantidade += 1
total += valor
print(f"Quantidade: {quantidade}")
print(f"Total: {total}")Preveja quantidade e total em cada caso, usando um rastreamento curto no papel:
A. inicio = 1, fim = 1
B. inicio = -3, fim = 0
C. inicio = -1, fim = 1
D. inicio = -1, fim = 3
Depois, copie o programa da tela anterior para seu editor e execute cada caso no seu computador, alterando apenas inicio e fim. Registre suas previsões e diga se as saídas coincidiram. Em qual caso o laço não executou e em qual executou sem aceitar valores?
Escreva pelo menos 20 caracteres (0/20).
No caso C, o valor zero foi aceito: quantidade terminou em 1 e total em 0.
Em outro problema cuja regra aceite -2 e 2, essas duas parcelas se anulam: quantidade seria 2 e total seria 0. Para saber se houve ocorrências aceitas, confira a quantidade, não a soma.

Somar zero ou somar parcelas que se anulam pode manter total em zero, mesmo com ocorrências aceitas.
Dica
Nenhuma ocorrência: os valores iniciais são preservados. Uma ocorrência: as atualizações usam o incremento correto. Várias ocorrências: os resultados parciais são mantidos, sem reinicialização dentro do laço.
Em um programa que conta e soma corretamente os valores aceitos, total == 0 é suficiente para concluir que nenhuma ocorrência foi aceita.

Passo 6 de 7
Calcule a média depois do laço e use a quantidade de ocorrências para decidir se há dados para dividir.
A média dos valores aceitos é total / quantidade. Os dois registros precisam representar as mesmas ocorrências.
Calcule a média depois do laço, quando a contagem e a soma estiverem completas. Antes de dividir, teste quantidade > 0. Se a quantidade for zero, mostre uma mensagem de ausência de dados — não apresente zero como se fosse uma média calculada.

É a quantidade que autoriza a divisão, não o valor do total.
Depois do laço, complete a lacuna com o nome da variável que deve ser testada:
if ___ > 0:
media = total / quantidade
print(f"Média: {media}")
else:
print("Sem dados para calcular a média.")Neste exemplo, todos os valores percorridos são aceitos: −1, 0 e 1. A soma é zero, mas existem três ocorrências. Portanto, a média pode ser calculada.
O if que protege a divisão está alinhado com o for: ele só é executado depois que o laço termina.
quantidade = 0
total = 0
for valor in range(-1, 2):
quantidade += 1
total += valor
if quantidade > 0:
media = total / quantidade
print(f"Média: {media}")
else:
print("Sem dados para calcular a média.")Exemplo
Ao terminar o laço, quantidade vale 3 e total vale 0. O teste 3 > 0 é verdadeiro, então a divisão 0 / 3 produz 0.0.
A saída é Média: 0.0. Isso é diferente de não ter dados: aqui há três valores para calcular a média.
Considere o mesmo bloco de cálculo e apresentação da tela anterior. Associe cada estado final do laço à saída correspondente.
Toque em um item e depois no par correspondente.

Passo 7 de 7
Complete um programa no seu computador, teste três cenários e justifique os resultados com um rastreamento manual.
No seu editor, crie o arquivo contagem.py e copie o código abaixo. Substitua as cinco lacunas ___ antes de executar.
O programa deve ler inteiros, aceitar apenas os positivos e encerrar ao receber zero. Ao final, deve mostrar quantidade, total e média dos valores aceitos — ou uma mensagem de ausência de dados. Use somente entradas inteiras válidas nesta prática.
Complete as inicializações, os incrementos e a condição que protege a divisão. As lacunas ainda não formam um programa pronto para execução.
quantidade = ___
total = ___
while True:
valor = int(input("Digite um inteiro (0 encerra): "))
if valor == 0:
break
if valor > 0:
quantidade += ___
total += ___
print(f"Quantidade: {quantidade}")
print(f"Total: {total}")
if ___:
media = total / quantidade
print(f"Média: {media:.2f}")
else:
print("Sem dados para calcular a média.")
O zero encerra antes das atualizações. Só os positivos chegam às duas atualizações.
Antes de executar, anote a quantidade, o total e a média esperados, ou a mensagem de ausência de dados. Depois, execute contagem.py no seu computador e digite cada valor quando ele for solicitado.
| Cenário | Entradas, nesta ordem |
|---|---|
| Encerramento imediato | 0 |
| Uma ocorrência aceita | 8, depois 0 |
| Caso misto | 4, depois -2, depois 6, depois -1, depois 2, depois 0 |
Reinicie o programa para cada cenário. Compare a saída com sua previsão; se houver diferença, procure a primeira atualização que não corresponde ao esperado.
Exemplo
No papel ou em um arquivo de texto, registre primeiro o estado inicial: quantidade = 0 e total = 0. Complete uma linha por passagem pelo corpo do laço.
| Passagem | valor | valor > 0? | quantidade antes | total antes | quantidade depois | total depois |
|---|---|---|---|---|---|---|
| 1 | 4 | … | … | … | … | … |
| 2 | -2 | … | … | … | … | … |
| 3 | 6 | … | … | … | … | … |
| 4 | -1 | … | … | … | … | … |
| 5 | 2 | … | … | … | … | … |
| 6 | 0 | Não avaliada: break | … | … | … | … |
Leve os valores finais de cada linha para o início da seguinte. Na linha do zero, registre os valores preservados até a saída: o break impede que o teste valor > 0 seja executado.
Relate a previsão e a saída observada em cada um dos três cenários. Inclua seu rastreamento do caso misto e explique por que os negativos e o zero não alteram os resultados.
Se você corrigiu o programa, indique a primeira divergência encontrada e o ajuste feito. Se não pôde executar localmente, informe isso e apresente sua previsão manual.
Escreva pelo menos 100 caracteres (0/100).
Exemplo
Na ordem do código, as lacunas são: 0, 0, 1, valor e quantidade > 0.
Assim, cada positivo acrescenta uma ocorrência à quantidade e seu próprio valor ao total. A divisão acontece somente depois do laço e quando existe pelo menos uma ocorrência aceita.
Resumo
Parabéns! Você concluiu: Construir contadores e acumuladores em laços
Você concluiu este nível!
Agora você vai iniciar: Coleções e transformação de dados
Acessar e recortar textos com índices e fatiasLocalizar caracteres e extrair trechos de textos usando posições, limites e passos, estabelecendo regras que também serão usadas em outras sequências.Milhares de cursos online em vídeo, ebooks e áudiobooks.
Para testar seus conhecimentos no decorrer dos cursos online
Gerado diretamente na galeria de fotos do seu celular e enviado ao seu e-mail
Baixe nosso aplicativo pelo QR Code ou pelos links abaixo:.
+ de 10 milhões
de alunos
Certificado grátis e
válido em todo o Brasil
60 mil exercícios
gratuitos
4,8/5 classificação
nas lojas de apps
Cursos gratuitos em
vídeo, ebooks e audiobooks