-
L=[1]
while len(L) < 6: # a funcao len() retorna o numero de itens em um objeto
L.append(L[-1]*len(L))
""" o metodo append() acrescenta elementos no fim da lista e o L[-1] esta fazendo referencia ao ultimo elemento, que multiplicado por len(L) vai ter a sequencia de:
L.append(1*1) primeiro luping igual a 1;
L.append(1*2) primeiro luping igual a 2;
L.append(2*3) primeiro luping igual a 6;
L.append(6*4) primeiro luping igual a 24;
L.append(24*5) primeiro luping igual a 120. """
print L
-
Porém a linguagem python exige identação. Portanto, ou o site cadastrou mal o exemplo do código ou o gabarito está errado.
-
Segundo o Gabarito da Banca, a resposta é a letra E (erro de execução).
Pensei que fosse letra D, uma vez que o erro ocorre antes mesmo da execução do programa.
-
Galerinha, lembrem-se que a função len(L) retorna o tamanho da lista L, que L[-1] referencia o último elemento da lista e que L.append(x) insere um novo elemento x no final da lista L.
No início, L = [1]. Logo, len(L) = 1.
Ele chega no while e faz o teste. len(L) < 6 ? Verdadeiro porque len(L) = 1.
Então entra na 1a iteração do while.
Na 1a iteração é feito L.append(L[-1]*len(L)) = L.append(1 * 1) = L.append(1) = [1, 1].
Na 2a iteração é feito L.append(L[-1]*len(L)) = L.append(1 * 2) = L.append(2) = [1, 1, 2].
Na 3a iteração é feito L.append(L[-1]*len(L)) = L.append(2 * 3) = L.append(6) = [1, 1, 2, 6].
Na 4a iteração é feito L.append(L[-1]*len(L)) = L.append(6 * 4) = L.append(24) = [1, 1, 2, 6, 24].
Na 5a iteração é feito L.append(L[-1]*len(L)) = L.append(24 * 5) = L.append(120) = [1, 1, 2, 6, 24, 120].
A 6a iteração do while não ocorre porque a essa altura len(L) < 6 deixa de ser verdade pois len(L) = 6. E a nossa lista L mutável ao final será [1, 1, 2, 6, 24, 120].
Resposta: C
-
Que gabarito é esse? O corre é a letra E. Tentem rodar esse código...
O print precisar dos () para funcionar. Assim: print(L)
-
Galerinha, lembrem-se que a função len(L) retorna o tamanho da lista L, que L[-1] referencia o último elemento da lista e que L.append(x) insere um novo elemento x no final da lista L.
No início, L = [1]. Logo, len(L) = 1.
Ele chega no while e faz o teste. len(L) < 6 ? Verdadeiro porque len(L) = 1.
Então entra na 1ª iteração do while.
Na 1ª iteração é feito L.append(L[-1]*len(L)) = L.append(1 * 1) = L.append(1) = [1, 1].
Na 2ª iteração é feito L.append(L[-1]*len(L)) = L.append(1 * 2) = L.append(2) = [1, 1, 2].
Na 3ª iteração é feito L.append(L[-1]*len(L)) = L.append(2 * 3) = L.append(6) = [1, 1, 2, 6].
Na 4ª iteração é feito L.append(L[-1]*len(L)) = L.append(6 * 4) = L.append(24) = [1, 1, 2, 6, 24].
Na 5ª iteração é feito L.append(L[-1]*len(L)) = L.append(24 * 5) = L.append(120) = [1, 1, 2, 6, 24, 120].
A 6ª iteração do while não ocorre porque a essa altura len(L) < 6 deixa de ser verdade pois len(L) = 6. E a nossa lista L mutável ao final será [1, 1, 2, 6, 24, 120].
Resposta: C
-
O comando "print L" só seria executado caso o interpretador fosse python 2. Em python 3 vai haver erro de execução, pq requer o parênteses. Ao meu ver deveria ser anulada, pois há duas respostas possiveis, letra C e E.
-
Ao executar o algoritmo a saída apresentada é essa:
[1, 1]
[1, 1, 2]
[1, 1, 2, 6]
[1, 1, 2, 6, 24]
[1, 1, 2, 6, 24, 120]
Em cada append (adicionar um termo ao vetor), o valor final é multiplicado pelo tamanho (len) atual do vetor, e depois impresso, repetindo isso enquanto o tamanho do vetor for menor que 6.
1ª loop = append (1*1) = 1
2ª loop = appen (1*2) = 2
3ª loop = append (2*3) = 6
4ª loop = append (6*4) = 24
5ª loop = append (24*5) = 120
Vetor atingiu o tamanho de 6, fim do while
-
Discordo do gabarito, pois no final devia estar print (L) , pois com o L sem os parenteses dá erro na execução.
-
A função len(L) retorna o tamanho da lista L, que L[-1] referencia o último elemento da lista e que L.append(x) insere um novo elemento x no final da lista L.
No início, L = [1].
Logo, len(L) = 1.
Ele chega no while e faz o teste. len(L) < 6 ? Verdadeiro porque len(L) = 1.
Então entra na 1ª iteração do while.
Na 1ª iteração é feito L.append(L[-1]*len(L)) = L.append(1 * 1) = L.append(1) = [1, 1].
Na 2ª iteração é feito L.append(L[-1]*len(L)) = L.append(1 * 2) = L.append(2) = [1, 1, 2].
Na 3ª iteração é feito L.append(L[-1]*len(L)) = L.append(2 * 3) = L.append(6) = [1, 1, 2, 6].
Na 4ª iteração é feito L.append(L[-1]*len(L)) = L.append(6 * 4) = L.append(24) = [1, 1, 2, 6, 24].
Na 5ª iteração é feito L.append(L[-1]*len(L)) = L.append(24 * 5) = L.append(120) = [1, 1, 2, 6, 24, 120].
A 6ª iteração do while não ocorre porque a essa altura len(L) < 6 deixa de ser verdade pois len(L) = 6. E a nossa lista L mutável ao final será [1, 1, 2, 6, 24, 120].