← Questões de Programação

Programação · FGV · 2021

Questão comentada de Programação

Considere o código Python 2.7 a seguir. def ABC(L, n): while True: if len(L) >= n: return L else: L.append(len(L) ** 2) print ABC([20],10) O resultado da execução desse código é:

Gabarito: D

Aqui a ideia é bem simples: a função fica em um laco infinito, mas ela mesma cria a saida de emergencia. Enquanto o tamanho da lista for menor que n, ela adiciona um novo elemento: o quadrado do tamanho atual da lista. Ou seja, o valor inserido depende do numero de elementos que a lista ja tem naquele instante. Como a chamada comeca em ABC([20], 10), a lista inicial tem tamanho 1. Entao o primeiro valor acrescentado sera 1**2 = 1. Depois vem 2**2 = 4, depois 3**2 = 9, e assim por diante, ate a lista atingir 10 elementos. Quando isso acontece, o teste len(L) >= n vira verdadeiro e a funcao retorna a propria lista. Em Python, listas sao mutaveis, entao a lista original vai sendo alterada dentro da funcao sem truques escondidos. Por isso, o resultado exibido e [20, 1, 4, 9, 16, 25, 36, 49, 64, 81], que corresponde a alternativa D. O padrao aqui e o classico: a banca gosta de testar leitura atenta de laco, condicao de saida e efeitos da mutabilidade da lista.

Continue treinando

Questões relacionadas