Questão de Programação — Linguagens de programação — FGV 2026
Programação›Linguagens 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.Assinale a opção que indica a linha que contém o erro desse código.
Anumeros = input("Digite números separados por espaço: ").split()
Bquantidade = len(numeros)
Cwhile i <= quantidade:
Dsoma += float(numeros[i])
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Índices válidos: 0 a n-1
2Condição correta: i < n
3Condição errada: i <= n
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.