FC ConcursosFC Concursos

Questão FC331113

A implementação de lógicas de tratamento de erros de execução e exceções é uma boa prática na programação. Considere o código abaixo escrito na linguagem Python, versão 3.11.11. <1

Linguagens de Programação

FGV · 2025

A implementação de lógicas de tratamento de erros de execução e exceções é uma boa prática na programação. Considere o código abaixo escrito na linguagem Python, versão 3.11.11.

 

<1> try:
<2>     x = int(input())
<3> except:
<4>     x = 0
<5> else:
<6>     x = x//2
<7> finally:
<8>     y = x%3

 

Analise os itens a seguir.

 

I. Se o retorno de input() na linha <2> for "100", o valor atribuído a y na linha <8> será 2 (dois). 

II. Se o retorno de input() na linha <2> for "2025", o valor atribuído a y na linha <8> será 0 (zero). 

III. Se o retorno de input() na linha <2> for "2*50", o comando na linha <8> não será executado. 

 

Está correto o que se afirma em

  1. I, apenas.
  2. II, apenas.
  3. I e II, apenas.
  4. I e III, apenas.
  5. II e III, apenas.
Mostrar resposta e comentário

Gabarito

A

Comentário do professor

Aqui só a afirmação I é verdadeira porque o fluxo de execução do bloco de tratamento de exceções em Python determina os valores finais.

No trecho, o try tenta converter a entrada para inteiro. Se a entrada for "100", a conversão ocorre sem erro e o bloco else é executado: \(100 // 2 = 50\). Note que // é divisão inteira.

O bloco finally é sempre executado, independente de ter ocorrido exceção; nele ocorre a atribuição de y como o resto da divisão de x por 3. Assim, \(50 \bmod 3 = 2\), logo y = 2.

Portanto, para a entrada "100" o programa define \(x=50\) e em seguida \(y=2\), justificando a correção da alternativa I.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo