Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FGV 2023

ProgramaçãoLinguagens de programação
Código
fg067930
Banca
FGV
Órgão
Receita Federal
Ano
2023
Nível
Superior
Cargo
Auditor-Fiscal (manhã)
Analise o código Python a seguir.class enigma:def iter(self):self.x = 128return selfdef next(self):y = self.xz = lambda a : a - int(a/2)self.x = z(self.x)return ycoisa = enigma()xpto = iter(coisa)for k in range(5):print(next(xpto))Assinale o quarto número exibido na execução desse código.
  1. A4
  2. B8
  3. C16
  4. D32
  5. E64
Revelar gabarito e comentário

GabaritoC — 16

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”.

Iteradores em Python – sequência e lambda

Gabarito: C) 16. O código implementa um iterador que, a cada chamada de next(), retorna o valor atual de x (inicializado em 128) e depois o atualiza subtraindo sua metade inteira (x - int(x/2)). O quarto número exibido é o retorno da quarta chamada de next(), que corresponde ao valor de x após três atualizações, ou seja, 16.

A classe enigma define __iter__ e __next__, tornando-se um iterador. O laço for k in range(5) chama next(xpto) cinco vezes. O cálculo é:

1ª chamada: retorna 128, x vira 128 - 64 = 64 2ª chamada: retorna 64, x vira 64 - 32 = 32 3ª chamada: retorna 32, x vira 32 - 16 = 16 4ª chamada: retorna 16, x vira 16 - 8 = 8 5ª chamada: retorna 8, x vira 8 - 4 = 4

Portanto, o quarto número é 16.

  1. 11ª: retorna 128, x=64
  2. 22ª: retorna 64, x=32
  3. 33ª: retorna 32, x=16
  4. 44ª: retorna 16, x=8
  5. 55ª: retorna 8, x=4
LEVEL · soulevel.com.br

Alternativa A – ❌ Incorreta

O valor 4 seria o sexto número, após mais duas iterações.

Alternativa B – ❌ Incorreta

O valor 8 é o quinto número, não o quarto.

Alternativa C – ✅ Correta

Como demonstrado, o quarto número é 16.

Alternativa D – ❌ Incorreta

O valor 32 é o terceiro número.

Alternativa E – ❌ Incorreta

O valor 64 é o segundo número.

NÃO CAIA NESSA!

Cuidado com o momento da atualização! O código primeiro armazena y = self.x (valor a ser exibido) e só depois recalcula self.x. O número exibido é anterior à atualização. Se você contar as atualizações em vez das exibições, pode errar.

Gabarito: C)

Link permanente: /questoes/fg067930