Pular para o conteúdo principal

Questão de Programação — Python — FGV 2024

ProgramaçãoPython
Código
fg075162
Banca
FGV
Órgão
AL-PR
Ano
2024
Nível
Superior
Cargo
Analista Legislativo - Desenvolvedor de Sistemas
O trecho a seguir, em Python, calcula a média de preços de estoques de diversas lojas.Imagem associada para resolução da questãoAssinale a opção que indica o código correto para fazer este cálculo.
  1. AImagem associada para resolução da questão
  2. BImagem associada para resolução da questão
  3. CImagem associada para resolução da questão
  4. DImagem associada para resolução da questão
  5. EImagem associada para resolução da questão
Revelar gabarito e comentário

GabaritoA — [imagem]

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”.

Cálculo de média de preços em Python

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.

  1. 1Somar os preços (sum ou for)
  2. 2Contar elementos (len)
  3. 3Dividir soma pela quantidade
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

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.

Alternativa B — ❌ Incorreta

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).

Alternativa C — ❌ Incorreta

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.

Alternativa D — ❌ Incorreta

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.

Alternativa E — ❌ Incorreta

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