Pular para o conteúdo principal

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

ProgramaçãoLinguagens de programação
Código
fg084716
Banca
FGV
Órgão
EPE
Ano
2024
Nível
Superior
Cargo
Analista de Gestão Corporativa - Tecnologia da Informação (Soluções)
Considere o código a seguir, escrito na linguagem de programação Python (versão 3.11.3)<1> x = []<2> for i in range(1,10,2):<3> x.append(i)<4> y = x<5> x[1] = 0<6> z = y[1]Assinale a opção que indica o valor que z recebe na linha <6>.
  1. A0
  2. B1
  3. C3
  4. D[0, 0, 0, 0, 0]
  5. E[0]
Revelar gabarito e comentário

GabaritoA — 0

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

Python: mutabilidade de listas e atribuição por referência

Gabarito: letra A. Após a execução do código, z recebe o valor 0. A chave da questão é entender que y = x não cria uma cópia da lista, mas faz y apontar para o mesmo objeto x. Assim, qualquer alteração em x reflete em y e vice‑versa.

Vamos simular passo a passo:

  1. x = [] → lista vazia.

  2. O laço for i in range(1,10,2): x.append(i) adiciona os números ímpares de 1 a 9, resultando em x = [1, 3, 5, 7, 9].

  3. y = xy passa a referenciar o mesmo objeto que x. Ambas as variáveis apontam para a mesma lista na memória.

  4. x[1] = 0 → altera o elemento de índice 1 (segundo elemento) para 0. Como x e y compartilham o objeto, a lista agora é [1, 0, 5, 7, 9].

  5. z = y[1] → acessa o índice 1 da lista referenciada por y, que é 0. Portanto, z = 0.

Alternativa A — ✅ Correta ⟵ GABARITO

z recebe 0, conforme demonstrado acima.

Alternativa B — ❌ Incorreta

1 é o valor do índice 0 antes da modificação. Na linha 6, y[1] já foi alterado para 0.

Alternativa C — ❌ Incorreta

3 era o valor original de x[1] antes da atribuição x[1] = 0. Após a linha 5, o valor é 0.

Alternativa D — ❌ Incorreta

z é um inteiro, não uma lista. O código não produz uma lista de zeros.

Alternativa E — ❌ Incorreta

Novamente, z é um inteiro, não uma lista.

NÃO CAIA NESSA!

A banca testa se o candidato sabe que y = x não copia a lista. Muitos alunos pensam que y se torna uma cópia independente, mas em Python a atribuição entre variáveis de objeto mutável (listas, dicionários, etc.) cria apenas uma nova referência ao mesmo objeto. A alteração em x[1] afeta y porque ambos apontam para a mesma lista. Memorize: variáveis em Python são rótulos para objetos, não caixas que guardam valores.

Gabarito: letra A

Link permanente: /questoes/fg084716