Questão nº 70
Questão de TI - Soluções · FGV EPE 2024 (nº 70)
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>.
- A0 (alternativa correta)
- B1
- C3
- D[0, 0, 0, 0, 0]
- E[0]
Resposta comentada
Gabarito Alternativa A
Em Python, quando você atribui uma lista a outra variável (`y = x`), ambas as variáveis passam a apontar para a mesma lista na memória, não criando uma cópia independente. Isso significa que qualquer alteração feita através de uma variável será visível pela outra.
(A) Correta: O valor de `z` é `0` porque `y` e `x` referenciam a mesma lista. Após o loop, `x` (e consequentemente `y`) é `[1, 3, 5, 7, 9]`. Na linha `<5>`, `x[1]` é alterado para `0`, modificando a lista compartilhada para `[1, 0, 5, 7, 9]`. Assim, `y[1]` também passa a ser `0`.
(B) Incorreta: `1` é o valor do primeiro elemento da lista (`x[0]` ou `y[0]`), não do segundo após a modificação.
(C) Incorreta: `3` era o valor original de `x[1]` (e `y[1]`) antes da linha `<5>`. A armadilha aqui é pensar que `y = x` cria uma cópia independente da lista, o que não acontece em Python para objetos mutáveis como listas; `y` apenas passa a apontar para a mesma lista que `x`.
(D) Incorreta: `z` recebe um único valor (o elemento na posição 1), não uma lista.
(E) Incorreta: `z` recebe um único valor (o elemento na posição 1), não uma lista.
Fonte: FGV EPE 2024 Analista de Gestão Corporativa - TI - Soluções (Caderno Tipo 1). Reproduzida para fins de estudo.