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
- I, apenas.
- II, apenas.
- I e II, apenas.
- I e III, apenas.
- 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