Pular para o conteúdo principal

Questão de Programação — Python — FGV 2024

ProgramaçãoPython
Código
fg099946
Banca
FGV
Órgão
TJ-RR
Ano
2024
Nível
Superior
Cargo
Analista Judiciário - Desenvolvimento de Sistemas
Considerando a linguagem de programação Python, analise os itens I, II e III a seguir. Os códigos foram escritos na versão 3.10.12.I. Após a execução das linhas de código abaixo, o valor atribuído a y será zero.<1> x = {x : x ** 2 for x in range(10) if x%2}<2> y = x.pop(0) II. Considerando as linhas de código abaixo, pode-se afirmar que a atribuição na linha <7> não será executada. <1> x = 1 <2> while x < 100: <3> x = x + 1 <4> if not x // 3: <5> break <6> else: <7> y = x III. Considere o código abaixo. <1> def f(n): <2> if n==1: <3> return 1 <4> else: <5> return f(n-1)*n A expressão f(5) retorna 120. Está correto o que se afirma em
  1. AI, apenas.
  2. BII, apenas.
  3. CI e II, apenas.
  4. DII e III, apenas.
  5. EI, II e III.
Revelar gabarito e comentário

GabaritoD — II e III, apenas.

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 – FGV 2024

Gabarito: D (II e III apenas). O item I está incorreto porque o método pop(0) gera um KeyError (a chave 0 não existe no dicionário), e a afirmação de que y seria zero é falsa. O item II está correto: o break interrompe o loop antes que a atribuição y = x seja executada. O item III está correto: a função recursiva calcula o fatorial, e f(5) retorna 120.

Item I — ❌ Incorreto

A comprehension {x : x ** 2 for x in range(10) if x%2} gera um dicionário apenas com os números ímpares de 0 a 9 (1, 3, 5, 7, 9). O dicionário resultante é {1:1, 3:9, 5:25, 7:49, 9:81}. A chamada x.pop(0) tenta remover a chave 0, que não existe no dicionário. Em Python, o método pop( chave ) levanta um KeyError se a chave não for encontrada (a menos que um valor padrão seja fornecido como segundo argumento). Portanto, a execução da linha <2> causa uma exceção, e y nunca recebe valor algum — a afirmação de que y seria zero é falsa.

NÃO CAIA NESSA!

Muitos candidatos confundem pop com pop( chave, default ) ou com o método get, que retorna None para chave ausente. Lembre-se: pop sem valor padrão sempre gera KeyError se a chave não existir.

Item II — ✅ Correto

x = 1
while x < 100:
    x = x + 1
    if not x // 3:
        break
    else:
        y = x

A execução passo a passo:

  • x = 1 → inicia o while (1 < 100)

  • x é incrementado para 2.

  • A condição if not x // 3: testa 2 // 3 = 0not 0 é True → executa break, saindo imediatamente do laço.

  • O bloco else do if (que contém y = x) não é executado porque o break interrompe o loop antes de chegar à linha y = x.

Portanto, a afirmação de que a atribuição na linha <7> não será executada está correta.

PEGA ESSA DICA!

Em Python, o break interrompe o laço mais interno imediatamente, e o else do if fica de fora. Para visualizar fluxos como esse, desenhe um fluxograma ou simule com poucas iterações.

Item III — ✅ Correto

A função f(n) é uma implementação recursiva do fatorial:

  • Se n == 1, retorna 1.

  • Caso contrário, retorna f(n-1) * n.

Calculando f(5):

  • f(5) = f(4) * 5

  • f(4) = f(3) * 4

  • f(3) = f(2) * 3

  • f(2) = f(1) * 2

  • f(1) = 1

Substituindo: f(5) = 1 * 2 * 3 * 4 * 5 = 120. A afirmação está correta.

Conclusão: Apenas os itens II e III são verdadeiros. Portanto, o gabarito é a letra D.

Link permanente: /questoes/fg099946