Analise o código Python 2.7 a seguir. L1=[ ] L2=[1,2,3,4] ...
Analise o código Python 2.7 a seguir.
L1=[ ]
L2=[1,2,3,4]
for k in range(3, -4,-1):
L1.append(L2[k])
for x in L:
print x
Esse programa causa
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: B - erro de execução.
Vamos analisar o código dado e compreender a razão dessa ser a resposta correta:
O código Python 2.7 apresentado cria duas listas, L1 e L2, onde L2 é inicializada com os valores [1,2,3,4].
O loop for
utiliza a função range(3, -4, -1)
, que gera uma sequência de números começando em 3 e indo até -4 (sem incluí-lo), decrementando de 1 em 1 a cada iteração. Isso cria a sequência [3, 2, 1, 0, -1, -2, -3].
Dentro do loop, a operação L1.append(L2[k])
tenta acessar os elementos da lista L2 usando os índices gerados pela função range()
. Aqui é onde o problema ocorre: embora os índices 3, 2 e 1 sejam válidos para a lista L2, ao tentar acessar L2[0] (que é válido) e qualquer índice negativo como L2[-1], L2[-2], ou L2[-3], o código ainda funcionará, pois em Python, índices negativos acessam os elementos a partir do fim da lista. No entanto, ao tentar acessar L2[-4], que não existe na lista L2 de 4 elementos, ocorrerá um IndexError, que é um tipo de erro de execução.
Além disso, há outro erro no código que não chega a ser executado devido ao erro de índice mencionado. A segunda estrutura de loop tenta iterar sobre uma lista chamada L, que não foi definida anteriormente no código. O nome correto da lista, baseando-se na lógica apresentada, seria L1. Mesmo que o problema do índice fosse corrigido, este erro causaria um NameError, também classificado como um erro de execução.
Por conta do primeiro erro de execução não ser possível acessar um índice inexistente na lista L2, a alternativa correta é a B, indicando que o programa causa um erro de execução.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
SyntaxError: multiple statements found while compiling a single statement
Para dar a resposta C conforme gabarito o código deveria ser:
L1=[]
L2=[1,2,3,4]
for k in range(3, -4,-1):
L1.append(L2[k])
for x in L1:
print(x)
O código correto seria:
L1=[]
L2=[1,2,3,4]
for k in range(3, -4,-1):
L1.append(L2[k])
for x in L1:
print (x)
Sendo o retornado pelo primeiro FOR de 3 até -4, exceto o -4, voltando de um a um (-1): L2[3]: 4, L2[2]:3, L2[1]:2, L2[0]:1, L2[-1]:4, L2[-2]:3 e L2[-3]:2
Logo a lista L1 fica: L1[4, 3, 2, 1, 4, 3, 2]
Portanto ao exibir os valores de L1 no segundo FOR em x a resposta é: 4, 3, 2, 1, 4, 3, 2
deve ter tido erro de digitação na hora de transcrever a questão.
Traceback (most recent call last): File "teste.py", line 5, in for x in L: NameError: name 'L' is not defined
Acho que o erro está em nao ter declarado a variável L (for x in L:)
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo