SóProvas


ID
2743186
Banca
FGV
Órgão
MPE-AL
Ano
2018
Provas
Disciplina
Programação
Assuntos

Analise o código Python 2.7 a seguir.


def f(x):

for a in x[::-1]:

yield a

L1=[]

L2=[1,2,3,4]

for k in f(L2):

L1.append(k)

for x in L1:

print x


Esse programa causa

Alternativas
Comentários
  • O enunciado está transcrito corretamente (sem indentação). Lembrem-se de que a indentação é uma característica importante no Python.

    Reformulando a questão para fins de aprendizado.

    ----------------------------------------------------

    Analise o código Python 3 a seguir.

    def f(x):

    >>for a in x[::-1]:

     >>>>yield a

    L1 = [ ]

    L2 = [1, 2, 3, 4]

    for k in f(L2):

    >>L1.append(k)

    for x in L1:

    >>print(x)

    ----------------------------------------------------

    Nesse caso, a alternativa correta seria: "esse programa causa a exibição dos valores 4,3,2,1, nessa ordem" (A).

    def f(x):

    >>for a in x[::-1]:

     >>>>yield a

    Define a função f(x), que inverte os elementos de uma lista x. O yield funciona mais ou menos como um return, mas mantém salvo o contexto da função.

    for k in f(L2):

    >>L1.append(k)

    Armazena cada k de f(L2) numa lista vazia L1. Ou seja,

    antes L1 = [ ]

    depois L1 = [4, 3, 2, 1]

    for x in L1:

    >>print(x)

    Esse último passo exibe no shell a sequência:

    >4

    >3

    >2

    >1