Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FGV 2026

ProgramaçãoLinguagens de programação
Código
fg127811
Banca
FGV
Órgão
AL-RO
Ano
2026
Nível
Médio
Cargo
Assistente Legislativo (Técnico em Informática)
O trecho de código Python a seguir pretende calcular a média de uma lista de números fornecida pelo usuário. No entanto, o código contém um erro de lógica.Imagem associada para resolução da questãoAssinale a opção que indica a linha que contém o erro desse código.
  1. Anumeros = input("Digite números separados por espaço: ").split()
  2. Bquantidade = len(numeros)
  3. Cwhile i <= quantidade:
  4. Dsoma += float(numeros[i])
  5. Emedia = soma / quantidade
Revelar gabarito e comentário

GabaritoC — while i <= quantidade:

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Erro de lógica em laço while no Python

Gabarito: letra C. O erro está na linha while i <= quantidade: porque, em Python, os índices de uma lista vão de 0 até len(lista) - 1. Ao usar <=, o laço tenta acessar o índice quantidade, que não existe, gerando IndexError: list index out of range. A condição correta seria while i < quantidade:.

O trecho de código apresentado tem a intenção de calcular a média de uma lista de números fornecida pelo usuário. Para isso, ele lê a entrada, separa os números, conta quantos são e, em um laço, soma cada elemento. O problema está justamente na condição de parada do laço. Em Python, listas são indexadas a partir de 0. Se a lista tem quantidade elementos, os índices válidos são 0, 1, 2, ..., quantidade-1. A condição i <= quantidade faz com que, quando i for igual a quantidade, o laço ainda execute uma iteração, tentando acessar numeros[quantidade], que está fora dos limites da lista. Isso resulta em um erro de execução (IndexError). A correção é usar < em vez de <=, garantindo que o laço pare antes de acessar um índice inexistente.

Vamos simular com uma lista de 3 números: numeros = ['1', '2', '3']. A variável quantidade será 3. Os índices válidos são 0, 1 e 2. Com while i <= quantidade, o laço executará para i = 0, i = 1, i = 2 e i = 3. Quando i = 3, a linha soma += float(numeros[3]) tentará acessar o quarto elemento, que não existe, causando o erro. Com while i < quantidade, o laço executará apenas para i = 0, i = 1 e i = 2, somando corretamente todos os elementos.

A pegadinha aqui é a confusão entre o número de elementos e o índice do último elemento. Muitos programadores iniciantes, acostumados com outras linguagens ou com a contagem a partir de 1, esquecem que em Python a indexação começa em 0. A banca explora exatamente essa confusão, apresentando a condição <= como se fosse correta, quando na verdade o correto é <.

Guarde a regra: para percorrer uma lista de tamanho n, o índice varia de 0 a n-1. A condição de parada deve ser i < n, nunca i <= n. É exatamente nesse detalhe que as alternativas se dividem.

  1. 1Índices válidos: 0 a n-1
  2. 2Condição correta: i < n
  3. 3Condição errada: i <= n
  4. 4Erro: IndexError no índice n
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta

A linha numeros = input("Digite números separados por espaço: ").split() está correta. Ela lê a entrada do usuário como uma string e a divide em uma lista de substrings, usando o espaço como separador. Por exemplo, se o usuário digitar "1 2 3", a variável numeros será ['1', '2', '3']. Não há erro de lógica aqui.

Alternativa B — ✅ Correta

A linha quantidade = len(numeros) está correta. A função len() retorna o número de elementos da lista. No exemplo, quantidade seria 3. Esse valor é usado para controlar o laço e calcular a média.

Alternativa C — ❌ Incorreta ⟵ GABARITO

A linha while i <= quantidade: contém o erro de lógica. Como explicado, a condição <= faz o laço tentar acessar um índice além do último. O correto seria while i < quantidade:. Essa é a linha que deve ser corrigida para o programa funcionar.

Alternativa D — ✅ Correta

A linha soma += float(numeros[i]) está correta. Ela converte cada elemento da lista (que é uma string) para um número de ponto flutuante e o adiciona à variável soma. O uso de float() é adequado para lidar com números decimais.

Alternativa E — ✅ Correta

A linha media = soma / quantidade está correta. Ela calcula a média dividindo a soma total pelo número de elementos. A divisão em Python 3 retorna um número de ponto flutuante, o que é apropriado para uma média.

NÃO CAIA NESSA!

A banca troca o operador de comparação < por <= na condição do laço. O candidato que não lembra que a indexação em Python começa em 0 pode achar que a condição está correta, pois parece intuitivo percorrer até o último elemento. Mas, com <=, o laço acessa um índice a mais, causando IndexError. Fique atento: para listas, a condição de parada é sempre < (menor que o tamanho), nunca <= (menor ou igual).

PEGA ESSA DICA!

Para evitar esse tipo de erro, lembre-se da relação entre o tamanho da lista e o último índice: o último índice é len(lista) - 1. Ao escrever um laço while, use i < len(lista) ou i < quantidade. Outra alternativa é usar o laço for i in range(len(numeros)):, que já cuida dos limites automaticamente.

Gabarito: letra C

Link permanente: /questoes/fg127811