Questão nº 69
Questão de TI - Soluções · FGV EPE 2024 (nº 69)
Considere o código a seguir, escrito na linguagem de programação Python (versão 3.11.3).
<1> x = {i: i ** 2 for i in range(10,0,-1)}
<2> y = sorted(x)
<3> z = (x[1], y[0], y[1])
Assinale a opção que indica o valor que z recebe na linha <3>.
- A(0, 0, 1)
- B(0, 1, 2)
- C(1, 0, 1)
- D(1, 0, 2)
- E(1, 1, 2) (alternativa correta)
Resposta comentada
Gabarito Alternativa E
Em Python, a função sorted() aplicada a um dicionário (uma coleção de pares chave-valor) retorna uma lista contendo apenas as chaves desse dicionário, ordenadas em ordem crescente por padrão.
Vamos analisar o código passo a passo:
-
x = {i: i ** 2 for i in range(10,0,-1)}:range(10,0,-1)gera uma sequência de números inteiros de 10 até 1 (10, 9, 8, 7, 6, 5, 4, 3, 2, 1).- Esta é uma compreensão de dicionário, que cria um dicionário
xonde cada númeroida sequência é uma chave e seu quadrado (i ** 2) é o valor. - Portanto,
xserá:{10: 100, 9: 81, 8: 64, 7: 49, 6: 36, 5: 25, 4: 16, 3: 9, 2: 4, 1: 1}.
-
y = sorted(x):- A função
sorted()aplicada a um dicionário retorna uma lista das chaves do dicionário, ordenadas em ordem crescente. - As chaves de
xsão[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]. - Ao ordenar essas chaves,
yse torna:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10].
- A função
-
z = (x[1], y[0], y[1]):- Esta linha cria uma tupla
zcom três elementos. x[1]: Acessa o valor associado à chave1no dicionáriox. Conforme definido emx, a chave1tem o valor1 ** 2, que é1. Então,x[1]é1.y[0]: Acessa o elemento no índice0da listay. A listayé[1, 2, 3, ...], entãoy[0]é1.y[1]: Acessa o elemento no índice1da listay. A listayé[1, 2, 3, ...], entãoy[1]é2.- Combinando esses valores,
zrecebe(1, 1, 2).
- Esta linha cria uma tupla
(A) Incorreta: x[1] é 1, não 0. y[0] é 1, não 0.
(B) Incorreta: x[1] é 1, não 0.
(C) Incorreta: y[0] é 1, não 0.
(D) Incorreta: y[0] é 1, não 0.
(E) Correta: O valor de x[1] é 1, o valor de y[0] é 1, e o valor de y[1] é 2. A tupla resultante é (1, 1, 2). A armadilha aqui é pensar que sorted(x) retornaria os valores do dicionário ordenados, ou que as chaves seriam mantidas na ordem decrescente do range, ou que o dicionário teria uma chave 0. Lembre-se: sorted() em um dicionário ordena sempre as chaves e em ordem crescente por padrão.
Fonte: FGV EPE 2024 Analista de Gestão Corporativa - TI - Soluções (Caderno Tipo 1). Reproduzida para fins de estudo.