Considere o seguinte trecho de código em Python: total = 1 EXPR for num in numbers: total *= num print(total) Assinale a opção que pode substituir EXPR, no trecho de código, para que o resultado exibido seja 3840.
- A)numbers = [1, 2, 4, 6, 10]
Errada, porque 1 x 2 x 4 x 6 x 10 = 480, e não 3840.
- B)numbers = [5, 10, 15, 20, 25]
Errada, porque 5 x 10 x 15 x 20 x 25 gera um valor muito maior que 3840.
- C)numbers = [2, 4, 6, 8, 10]
Certa, porque 2 x 4 x 6 x 8 x 10 = 3840.
- D)numbers = [10, 15, 20, 25, 30]
Errada, porque 10 x 15 x 20 x 25 x 30 ultrapassa muito 3840.
- E)numbers = [2, 6, 8, 10, 12]
Errada, porque 2 x 6 x 8 x 10 x 12 = 11520, diferente de 3840.
Gabarito: C
Aqui a ideia é simples: o código começa com total = 1 e, dentro do laço, vai multiplicando esse total por cada número da lista. Ou seja, no fim, o que importa é o produto de todos os elementos de numbers. É como uma “colinha” de multiplicação acumulada: cada volta do for pega o valor atual de total e o aumenta com o próximo item. Para descobrir a opção certa, basta fazer a conta mental do produto de cada lista. O resultado precisa ser 3840. Quando você testa a alternativa C, tem 2 x 4 x 6 x 8 x 10 = 3840, então ela encaixa perfeitamente. Repare que o valor inicial 1 não altera o produto, ele só serve para não “quebrar” a multiplicação antes do laço começar. Esse padrão é muito comum em Python: usar uma variável acumuladora e atualizar com operadores como *=. Em termos de lógica de programação, isso é uma redução por multiplicação. Não há pegadinha de sintaxe aqui, só leitura atenta do efeito do laço e cálculo do produto final. Então, o gabarito é C porque é a única lista cujo produto resulta exatamente em 3840.