Considere o código escrito em linguagem Python abaixo a = 1...
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 é
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: C - 40
Tema central da questão: A questão testa o conhecimento sobre a estrutura de repetição for e o uso de condições if em Python. Esses são conceitos fundamentais em programação, especialmente para o cargo de Técnico de Tecnologia da Informação, onde é necessário entender como manipular e iterar dados eficientemente.
Resumo teórico: O laço for em Python é utilizado para iterar sobre uma sequência (ou seja, uma lista, tupla, string, etc.). A função range() gera uma sequência de números, que neste caso varia de 0 a b-1. A estrutura condicional if-elif-else é utilizada para executar diferentes blocos de código com base em condições específicas.
Fonte relevante: Documentação oficial do Python sobre controle de fluxo.
Justificativa da alternativa correta: O código fornecido realiza iterações de 0 a 11 (12 iterações no total, pois b = 12). Em cada iteração, ele verifica se o índice atual i é divisível por 3 (i%3), por 2 (i%2), ou nenhum dos dois, e incrementa a variável a de acordo com a condição que é verdadeira:
- Se
ifor não divisível por 3:a = a + 3 - Se
ifor não divisível por 2:a = a + 2 - Caso contrário (divisível por 2 e por 3):
a = a + 1
O cálculo detalhado para cada iteração leva ao valor final de a = 40.
Análise das alternativas incorretas:
- A - 38: Resultado incorreto, possivelmente resultante de erro na contagem ou cálculo dos incrementos.
- B - 27: Muito abaixo do resultado correto; poderia indicar um erro na lógica de incrementos aplicados.
- D - 52: Superior ao valor correto, poderia indicar um erro de contagem de incrementos.
- E - 18: Esse valor ignora boa parte dos incrementos aplicados ao longo das iterações.
Gostou do comentário? Deixe sua avaliação aqui embaixo!
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}')
rev
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo