Analise o código Python a seguir.class enigma:     def __ite...

Próximas questões
Com base no mesmo assunto
Q2096191 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.
Alternativas

Comentários

Veja os comentários dos nossos alunos

O código define uma classe que implementa os métodos e necessários para que um objeto da classe possa ser usado como iterador. Quando um objeto da classe é criado e seu método é chamado, ele inicializa a variável com o valor 128 e retorna .

O método é responsável por retornar o próximo elemento da sequência. Ele armazena o valor atual de na variável , calcula o próximo valor de aplicando uma função lambda que subtrai a metade do valor de do próprio valor, e então retorna o valor de .

No loop , um objeto iterador é criado a partir de um objeto e é chamado o método do iterador para imprimir os próximos valores da sequência. Como o loop é executado 5 vezes, serão impressos os primeiros 5 valores da sequência.

Os primeiros quatro valores da sequência serão 128, 64, 32 e 16, respectivamente. Portanto, o quarto número exibido na execução do código será 16.

Como resolver questões de Python sem identação?

Essa questão precisa de formatação. Para ajudar na compreensão:

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))

Os números exibidos são:

128

64

32

16

8

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))

1ª iteração

self.x = 128 / 2 = 64

retorna y=128

2ª iteração

self.x = 64 / 2 = 32

retorna y=64

3ª iteração

self.x = 32 / 2 = 16

retorna y=32

4ª iteração

self.x = 16 / 2 = 8

retorna y=16

5ª iteração

self.x = 8 / 2 = 4

retorna y=8

O quarto item que será impresso é 16.

A prova com indentação está nesse link:

https://arquivos.qconcursos.com/prova/arquivo_prova/92309/fgv-2023-receita-federal-auditor-fiscal-manha-prova.pdf?_ga=2.241499850.977960604.1700742582-2048531100.1700742582

Questão 78

Resolvendo a questão:

para k=1

y <- x = 128

z = 128/2 = 64

x <- z = 64

return y

apresenta na tela o valor de Y (128)

para k=2

y <- x = 64

z = 64/2 = 32

x <- z = 32

return y

apresenta na tela o valor de Y (64)

para k=3

y <- x = 32

z = 32/2 = 16

x <- z = 16

return y

apresenta na tela o valor de Y (32)

para k=4

y <- x = 16

z = 16/2 = 8

x <- z = 8

return y

apresenta na tela o valor de Y (16)

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo