Questão de Programação — Python — FGV 2024
- Código
- fg077021
- Banca
- FGV
- Órgão
- CGE-PB
- Ano
- 2024
- Nível
- Superior
- Cargo
- Auditor de Contas Públicas - Auditoria de Tecnologia da Informação
- ABola
- BTrem
- CUrso
- DCarro
- EBarco
GabaritoE — Barco
Gabarito: letra E (Barco). O código carrega um JSON em um dicionário, conta suas chaves com len(y) (resultando em 3) e acessa o índice 3 da lista brinquedo, que é o quarto elemento ("Barco").
x = '{"nome":"Junior", "idade":5, "brinquedo":["Carro", "Bola", "Trem", "Barco", "Urso"]}'
Uma string JSON que representa um objeto com três chaves: nome, idade, brinquedo. O valor de brinquedo é uma lista de 5 strings.
y = json.loads(x)
Converte a string JSON em um dicionário Python. As chaves são "nome", "idade", "brinquedo".
z = len(y)
len() aplicado a um dicionário retorna o número de chaves. Como há 3 chaves, z = 3.
print(y["brinquedo"][int(z)])
Acessa y["brinquedo"], que é a lista ["Carro", "Bola", "Trem", "Barco", "Urso"].
Depois, [int(z)] acessa o índice 3 (o quarto elemento da lista, já que a indexação começa em 0).
Portanto, lista[3] = "Barco".
Bola corresponde ao índice 1, não ao índice 3.
Trem corresponde ao índice 2.
Urso corresponde ao índice 4 (último elemento), não ao índice 3.
Carro corresponde ao índice 0.
Barco é o elemento no índice 3, exatamente o que o código imprime.
A armadilha está em len(y). Muitos candidatos podem pensar que len(y) conta os elementos da lista brinquedo (que são 5), mas na verdade len() aplicado a um dicionário conta o número de chaves (3). Com isso, o índice acessado é 3, e não 5 (que estouraria o índice) nem outro valor. O código usa int(z), mas z já é inteiro; a conversão é redundante.
Em Python, sempre que você vir len() em um dicionário, lembre-se: conta chaves, não valores. Para saber o comprimento de uma lista aninhada, você precisa acessar a lista primeiro: len(y["brinquedo"]).
Gabarito: letra E
Link permanente: /questoes/fg077021