← Questões de Programação

Programação · FGV · 2023

Questão comentada de Programação

Analise o código Python a seguir. class enigma: def __iter__(self): self.x = 128 return self def __next__(self): y = self.x z = lambda a : a - int(a/2) self.x = z(self.x) return y coisa = enigma() xpto = iter(coisa) for k in range(5): print(next(xpto)) Assinale o quarto número exibido na execução desse código.

Gabarito: C

Aqui a ideia central é iterar sobre um objeto Python personalizado. Quando voce define __iter__(), o objeto passa a ser iteravel, e quando define __next__(), voce controla o que sera devolvido a cada chamada de next(). No codigo, __iter__() inicia self.x em 128 e devolve o proprio objeto, que vira o iterador. Ja __next__() pega o valor atual de x, calcula o proximo com a regra z(a) = a - int(a/2), e devolve o valor antigo. Em outras palavras: ele vai cortando o numero pela metade a cada passo, mas sempre entregando o valor anterior primeiro.

Continue treinando

Questões relacionadas