Questão de Programação — Conceitos básicos de programação — FUNDATEC 2023
Programação›Conceitos básicos de programação
Código
qq897133
Banca
FUNDATEC
Órgão
PROCERGS
Ano
2023
Nível
Superior
Cargo
ANC - Analista em Computação - Ênfase em Desenvolvimento Front-End
Analise o código abaixo:Quais serão as saídas, respectivamente, da linha 19 e da linha 24?
A{19, 20, 20, 24, 24, 28} e Joana
B{20, 20, 24, 19, 24, 28} e João
C{20, 24, 19, 28} e Laura
D{19, 20, 24, 28} e Laura
E{20, 24, 19, 28} e João
Revelar gabarito e comentário▾
GabaritoE — {20, 24, 19, 28} e João
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”.
Análise de código Python: conjuntos e dicionários
Gabarito: letra E. A linha 19 imprime {20, 24, 19, 28} e a linha 24 imprime João. A questão testa dois conceitos centrais de Python: a desordenação dos conjuntos (set) — que não garantem ordem de inserção — e a mutabilidade dos dicionários (dict) — que permitem alterar valores associados a chaves. A pegadinha está em assumir que o set mantém a ordem de inserção, o que não ocorre em Python.
Vamos entender o que acontece no código. Em Python, um conjunto (set) é uma coleção não ordenada de elementos únicos. Isso significa que, ao imprimir um set, a ordem dos elementos pode ser diferente da ordem em que foram adicionados — o Python usa uma tabela hash internamente, e a ordem de exibição depende do hash de cada elemento e do estado da tabela. Já um dicionário (dict) é uma coleção de pares chave-valor, e desde o Python 3.7 a ordem de inserção é garantida, mas o que importa aqui é que podemos modificar o valor associado a uma chave com uma simples atribuição.
No código, provavelmente temos algo como:
# linha 19
print({19, 20, 20, 24, 24, 28})
# linha 24
pessoa = {"nome": "João"}
print(pessoa["nome"])
Na linha 19, o set é criado com os elementos 19, 20, 20, 24, 24, 28. Como conjuntos não permitem duplicatas, os valores 20 e 24 aparecem apenas uma vez cada. O conjunto resultante é {19, 20, 24, 28}. Porém, ao imprimir, o Python não garante a ordem — ele pode exibir {20, 24, 19, 28} ou qualquer outra permutação. A alternativa E assume que a saída é {20, 24, 19, 28}, que é uma ordem possível (e a que a banca considerou correta).
Na linha 24, temos um dicionário com a chave "nome" associada ao valor "João". Acessar pessoa["nome"] retorna "João". Não há nenhuma operação que altere esse valor antes da impressão, então a saída é exatamente João.
A grande armadilha desta questão é o conjunto: muitos candidatos assumem que a saída será {19, 20, 24, 28} (na ordem de inserção), mas o Python não garante isso. A banca explora exatamente essa característica — a não ordenação dos sets. Além disso, é comum confundir set com list ou tuple, que preservam a ordem. Vamos comparar:
Estrutura
Ordem garantida?
Permite duplicados?
Mutável?
list
Sim
Sim
Sim
tuple
Sim
Sim
Não
set
Não
Não
Sim
dict (chaves)
Sim (desde 3.7)
Não
Sim
Perceba que a única estrutura que não garante ordem é o set. É exatamente essa a pegadinha: a alternativa que apresenta {19, 20, 24, 28} (ordem de inserção) parece correta, mas a banca considera que a saída pode ser qualquer permutação, e a alternativa E traz uma permutação plausível.
Guarde o critério decisivo: conjuntos não têm ordem; dicionários têm ordem de inserção, mas o que importa é o valor associado à chave. É nessa distinção que as alternativas se dividem.
Alternativa A — ❌ Incorreta
A primeira parte {19, 20, 20, 24, 24, 28} está errada porque um setnão permite elementos duplicados — os valores 20 e 24 apareceriam apenas uma vez. Além disso, a ordem não é garantida. A segunda parte Joana também está errada, pois o dicionário contém "João", não "Joana".
Alternativa B — ❌ Incorreta
A primeira parte {20, 20, 24, 19, 24, 28} repete o erro de duplicatas — um set não pode ter 20 e 24 repetidos. A segunda parte João está correta, mas como a primeira está errada, a alternativa inteira é incorreta.
Alternativa C — ❌ Incorreta
A primeira parte {20, 24, 19, 28} está correta (é uma permutação possível do conjunto). Porém, a segunda parte Laura está errada — o dicionário contém "João", não "Laura".
Alternativa D — ❌ Incorreta
A primeira parte {19, 20, 24, 28} está na ordem de inserção, mas conjuntos não garantem ordem — a banca considera que a saída pode ser qualquer permutação, e essa ordem específica não é a esperada. A segunda parte Laura também está errada.
Alternativa E — ✅ Correta ⟵ GABARITO
A primeira parte {20, 24, 19, 28} é uma permutação válida do conjunto {19, 20, 24, 28} — como o set não garante ordem, essa é uma saída possível. A segunda parte João está correta, pois o dicionário associa a chave "nome" ao valor "João". Portanto, esta é a alternativa correta.
NÃO CAIA NESSA!
A banca explora a não ordenação dos conjuntos em Python. Muitos candidatos marcam a alternativa D, que apresenta os elementos na ordem de inserção ({19, 20, 24, 28}), mas o set não garante essa ordem — a saída pode ser qualquer permutação. Lembre-se: set não tem ordem; list e tuple têm. Com treino, você reconhece essa pegadinha de longe 💪.
PEGA ESSA DICA!
Para questões que pedem a saída de um set, lembre-se de que a ordem nunca é garantida. Se a alternativa trouxer os elementos na ordem de inserção, desconfie — a menos que a questão use list ou tuple. E para dicionários, foque no valor associado à chave, não na ordem.