Considere o código escrito em linguagem Python abaixo a = 10 b = 12 for i in range(b): if i%3 : a = a + 3 elif i%2 : a = a + 2 else : a = a + 1 print(a) O valor da variável “a” exibido é
- A)38
Errada, porque o total acumulado ao longo do laco passa de 28 e leva `a` para 40, nao para 38.
- B)27
Errada, pois o valor final nao fica abaixo de 30; as somas sucessivas elevam `a` bem mais do que isso.
- C)40
Certa, porque os 12 passos do laco somam 30 ao valor inicial 10, resultando em 40.
- D)52
Errada, já que 52 exigiria acréscimos maiores do que os produzidos pelo codigo.
- E)18
Errada, porque 18 corresponde a um aumento total muito pequeno para os 12 ciclos executados.
Gabarito: C
Aqui a ideia principal e entender como o Python decide qual bloco executar dentro do if/elif/else. O teste `i%3` nao verifica "se e multiplo de 3" de forma textual, mas sim o resto da divisao: se o resto for diferente de zero, a condicao e verdadeira. Então, para os valores que nao sao multiplos de 3, soma-se 3 em `a`. Quando `i` e multiplo de 3, `i%3` vale 0 e o primeiro `if` falha. Aí entra o `elif i%2`: se `i` for impar, soma 2; se for par, cai no `else` e soma 1. Ou seja, os multiplos de 3 alternam entre +1 e +2 conforme a paridade. No intervalo de 0 a 11, isso gera os acréscimos: +1, +3, +3, +2, +3, +3, +1, +3, +3, +2, +3, +3. A soma desses incrementos e 30. Como `a` comeca em 10, o valor final exibido fica 40. Por isso o gabarito correto e a alternativa C. A questao cobra leitura atenta de operadores de resto e da ordem de avaliacao do `if/elif/else`, uma dupla que adora confundir quem olha rapido demais.