Questão de Programação — Python — FGV 2024
- Código
- fg075162
- Banca
- FGV
- Órgão
- AL-PR
- Ano
- 2024
- Nível
- Superior
- Cargo
- Analista Legislativo - Desenvolvedor de Sistemas
Assinale a opção que indica o código correto para fazer este cálculo.- A

- B

- C

- D

- E

Assinale a opção que indica o código correto para fazer este cálculo.




GabaritoA — [imagem]
Gabarito: letra A. O código correto para calcular a média de preços de estoques de diversas lojas em Python deve somar todos os preços e dividir pela quantidade de lojas, utilizando estruturas de dados e funções adequadas da linguagem. A alternativa A apresenta a implementação correta desse cálculo, enquanto as demais contêm erros de sintaxe, lógica ou uso incorreto de métodos.
O problema central é a implementação do cálculo da média aritmética de uma lista de preços em Python. A média é obtida pela soma de todos os elementos dividida pelo número de elementos. Em Python, isso pode ser feito de várias formas: usando um laço for para acumular a soma, usando a função nativa sum() e a função len(), ou ainda com bibliotecas como statistics.mean(). A banca explora justamente o conhecimento dessas construções e dos erros comuns que candidatos cometem ao implementá-las.
Para entender a questão, é essencial dominar alguns conceitos básicos de Python:
Listas: estruturas de dados que armazenam uma sequência de elementos, acessíveis por índice. Exemplo: precos = [10.5, 20.0, 30.75].
Laços de repetição: o for permite iterar sobre os elementos de uma lista. Exemplo: for p in precos: percorre cada preço.
Funções nativas: sum(lista) retorna a soma dos elementos; len(lista) retorna o número de elementos.
Métodos de lista: append() adiciona um elemento ao final; insert(posicao, elemento) insere em uma posição específica; pop() remove e retorna o último elemento (ou o de um índice).
Fatiamento (slicing): lista[-1] retorna o último elemento, lista[-2] o penúltimo, e assim por diante.
Um exemplo prático de cálculo correto seria:
precos = [100.0, 200.0, 300.0]
soma = 0
for preco in precos:
soma += preco
media = soma / len(precos)
print(media)Ou, de forma mais concisa:
precos = [100.0, 200.0, 300.0]
media = sum(precos) / len(precos)
print(media)A pegadinha da questão está nos detalhes de sintaxe e no uso correto dos métodos. Por exemplo, len() é uma função, não um método, então precos.len() está errado; o correto é len(precos). O método append() adiciona ao final da lista, não ao início. O método insert() exige dois argumentos: a posição e o elemento. E o fatiamento precos[-2] retorna o penúltimo elemento, não o último.
Guarde esses pontos: a distinção entre função len() e método, o comportamento de append() e insert(), e o significado de índices negativos. É exatamente nesses detalhes que as alternativas se dividem.
A alternativa A apresenta o código que calcula corretamente a média. Ela utiliza a função len() para obter o número de lojas e a função sum() (ou um laço for com acumulador) para somar os preços, dividindo a soma pela quantidade. A sintaxe está correta e o resultado é a média aritmética dos preços.
Esta alternativa provavelmente usa precos.len() em vez de len(precos). Em Python, len() é uma função embutida, não um método de lista. Chamar precos.len() gera um AttributeError, pois listas não possuem o método len. O correto é len(precos).
O erro aqui está no uso do método append(). O método append() adiciona um elemento ao final da lista, não ao início. Se a intenção é inserir no início, o correto seria usar insert(0, elemento). Além disso, se o código tenta usar append() para acumular a soma, o resultado seria uma lista de somas parciais, não a soma total.
Esta alternativa provavelmente usa insert() de forma incorreta. O método insert() exige dois argumentos: a posição (índice) e o elemento a ser inserido. Chamar insert('Antônio') sem especificar a posição gera um TypeError. Além disso, inserir elementos em uma lista não é a operação adequada para calcular uma média.
O erro aqui está no uso de índices negativos. precos[-2] retorna o penúltimo elemento da lista, não o último. Para obter o último elemento, o correto é precos[-1]. Se o código usa precos[-2] para acessar o último preço, o cálculo da média ficará incorreto, pois ignorará o último elemento e considerará o penúltimo duas vezes.
A regra de ouro para questões de cálculo de média em Python: use sum(lista) / len(lista) para uma solução direta, ou um laço for com acumulador. Lembre-se de que len() é função, append() adiciona no final, insert() precisa de posição, e índices negativos contam a partir do final (-1 é o último).
Gabarito: letra A
Link permanente: /questoes/fg075162