Considere o código fonte Python abaixo. def calcular(n): ...
def calcular(n):
resultado = [ ]
a, b = 0, 1
while a < n:
...I...
return resultado
res = calcular(100)
print res
Para que seja exibido [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] a lacuna I precisa ser preenchida corretamente com:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Resposta Correta: B
A questão pede para completar o código de uma função em Python que deve gerar uma sequência de Fibonacci até um número n. A sequência de Fibonacci é uma série de números onde cada número é a soma dos dois precedentes, começando tipicamente com 0 e 1.
O código fornece a estrutura básica com um laço while
que continua a executar enquanto a variável a
for menor que n
. Para que a função retorne a sequência de Fibonacci desejada, precisamos adicionar cada número atual da sequência (armazenado em a
) a uma lista (chamada resultado
) e depois atualizar as variáveis a
e b
para os próximos números da sequência.
A alternativa correta é a B, que utiliza o método append
para adicionar o elemento atual a
ao final da lista resultado
. Em seguida, atualiza os valores de a
e b
de tal maneira que a
recebe o valor de b
e b
recebe a soma de a
e b
(ou seja, o próximo número da sequência), o que é feito com a expressão a, b = b, a+b
. Este é o processo que gera a sequência de Fibonacci.
Veja a alternativa correta formatada com as tags HTML:
a, b = b, a+b
As outras alternativas estão incorretas por diversos motivos:
- A alternativa A usa um método que não existe para listas em Python (
insert
existe, mas requer dois argumentos). - A alternativa C usa
add
, que é um método para conjuntos (set
) e não listas, além de atualizar incorretamente as variáveisa
eb
. - A alternativa D também usa
append
, mas atualiza as variáveis de forma invertida, o que não produziria a sequência de Fibonacci. - A alternativa E repete o erro de usar o método
add
, que não é aplicável para listas.
Entender o funcionamento do método append
e a lógica de atualização das variáveis na sequência de Fibonacci é essencial para resolver essa questão corretamente.
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
O append()método acrescenta um elemento ao final da lista.
Sintaxe:
list.append(elmnt)
Iteração 1:
A = 0
B = 1
0 < n (condição do loop):
Imprime: 0
Iteração 2:
A = 0
B = 1
1 < 10 (condição do loop):
Imprime: 0 1
A = 1 / B = 0 + 1 (1)
Iteração 3:
A = 1
B = 1
1 < 10 (condição do loop):
Imprime: 0 1 1
A = 1 / B = 1 + 1 (2)
Iteração 4:
A = 1
B = 2
2 < 10 (condição do loop):
Imprime: 1 1 2
A = 2 / B = 1 + 2 (3)
Iteração 5:
A = 2
B = 3
3 < 10 (condição do loop):
Imprime: 1 1 2 3
A = 3 / B = 5
Já que o QC não tem a capacidade de colocar um código formatado decentemente, segue o mesmo para os colegas:
def calcular(n):
resultado = []
a, b = 0, 1
while a < n:
...I...
return resultado
res = calcular(100)
print res
LETRA B
Decorem o fibonacci e o fatoria, a FCC adora, em qualquer linguagem:
Q701574
Append: Função utilizada para adicionar um item ao final da lista. Pensando como uma pilha, de modo inverso a uma lista, ele adiciona um item no topo.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo