Considere o código escrito em linguagem Python abaixo a = 1...

Próximas questões
Com base no mesmo assunto
Q2236126 Programação

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 é 

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

A alternativa correta é a C - 40.

Para resolver esta questão, você necessita compreender o funcionamento do laço de repetição for em Python e como operadores matemáticos e lógicos são utilizados para controlar o fluxo do programa.

O laço for está percorrendo um intervalo de números de 0 até b-1, onde b é igual a 12. Isso significa que o laço vai iterar 12 vezes, porque a função range gera uma sequência de números que começa em 0 e vai até o valor passado como parâmetro, excluindo-o.

Dentro do laço, temos uma estrutura condicional if...elif...else que verifica:

  • Se o resto da divisão de i por 3 (i%3) é diferente de zero, o que significa que i não é divisível por 3;
  • Se o resto da divisão de i por 2 (i%2) é diferente de zero, o que indica que i não é divisível por 2;

E, finalmente, o else que captura qualquer outra situação que não se encaixe nas anteriores.

Em cada iteração, dependendo das condições, a é incrementado por 1, 2 ou 3. A variável a começa com o valor 10, e será modificada conforme as condições dos números de 0 a 11.

Vamos calcular passo a passo:

  • Para i = 0, cai no else: a = 10 + 1 = 11;
  • Para i = 1, cai no primeiro if: a = 11 + 3 = 14;
  • Para i = 2, cai no elif: a = 14 + 2 = 16;
  • ... após as iterações restantes ...
  • Para i = 11, cai no elif: a da iteração anterior era 37, então a = 37 + 3 = 40.

Portanto, após o laço de repetição ser concluído, o valor final de a será 40.

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

Aqui deu erro..

Em Python qualquer valor diferente de 0 automaticamente é true.

Logo o valor de A = 40

Fonte: https://pt.stackoverflow.com/questions/270815/como-o-python-determina-se-um-valor-%C3%A9-verdadeiro

Quando o resto da divisão do “i” for igual a 0 (zero) é True, ou seja, não faz o incremento.

O incremento ocorre quando tiver sobra na execução do módulo, ou seja, só há incremento quando a operação for falsa.

a=10

1ª - i = 0 => Vai cair no else: a = a + 1 => a =11

2ª - i = 1 => Vai cair no if i%3: tem resto 1 (falso) => a + 3 => a =14

3ª - i = 2 => Vai cair no if i%3: tem resto 2 (falso) => a + 3 => a =17

4ª - i = 3 => Vai cair no if i%2: tem resto 1 (falso) => a + 2 => a =19

5ª - i = 4 => Vai cair no if i%3: tem resto 1 (falso) => a + 3 => a =22

6ª - i = 5 => Vai cair no if i%3: tem resto 2 (falso) => a + 3 => a =25

7ª - i = 6 => Vai cair no if i%3: tem resto 0 (true) => não faz incremento

Vai cair no if i%2: tem resto 0 (true) => não faz incremento

Vai para o else: => a + 1 => a =26

8ª - i = 7 => Vai cair no if i%3: tem resto 1 (falso) => a + 3 => a =29

9ª - i = 8 => Vai cair no if i%3: tem resto 2 (falso) => a + 3 => a =32

10ª - i = 9 => Vai cair no if i%3: tem resto 0 (true) => não faz incremento

Vai cair no if i%2: tem resto 1 (false) => a + 2 => a =34

11ª - i = 10 => Vai cair no if i%3: tem resto 1 (true) => a + 3 => a =37

12ª - i = 11 => Vai cair no if i%3: tem resto 1 (true) => a + 3 => a =40

No final faz o print: 40

Quem quiser entender melhor rode este script:

a = 10

b = 12

for i in range(b):

print(f'{i:02} ->>> 3 -> {i}%3 é {i%3 != 0} {i}%3 é {i%3}\t2 -> {i%2 != 0} {i}%2 é {i%2}', end='\t')

if i%3 : a = a + 3; print(f'{a-3} incrementado em 3 = {a}')

elif i%2 : a = a + 2; print(f'{a-2} incrementado em 2 = {a}')

else : a = a + 1; print(f'{a-1} incrementado em 1 = {a}')

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo