Questão nº 77
Questão de Estatística · FGV MP-SC 2022 (nº 77)
Analise o código Python a seguir.
```
x = 0
y = 20
try:
print (y/x)
except:
print("Deu erro!")
else:
print("Ok")
finally:
print ("The end")
```
A saída produzida pela execução desse trecho é:
- ANone
The end - BDeu erro!
The end (alternativa correta) - CDeu erro!
Ok - DOk
The end - ENone
Ok
The end
Resposta comentada
Gabarito Alternativa B
Conceito-chave: Em Python, o bloco try tenta executar o código. Se der erro, o bloco except roda. O bloco else só roda se não houver erro. O bloco finally roda sempre, com ou sem erro, e é a última coisa a ser executada.
- (A) Incorreta:
Nonenão é impresso em lugar nenhum; a divisão por zero gera uma exceção, não um valorNone, e oelsenão é executado. - (B) Correta: A divisão
y/xcomx=0levanta uma exceção (ZeroDivisionError), então oexceptimprime "Deu erro!". Como houve erro, oelseé pulado. Ofinallysempre executa, imprimindo "The end". A ordem é exatamente: "Deu erro!" e depois "The end". - (C) Incorreta: O
elsesó roda se não houver erro; como houve erro, "Ok" nunca é impresso. - (D) Incorreta: "Ok" só sairia se a divisão funcionasse, mas
20/0falha; além disso, ofinallyviria depois, não antes. - (E) Incorreta: Mistura
None(que não aparece) e "Ok" (que é pulado), além de ordem errada dofinally.
Armadilha da banca: O distrator mais tentador é a letra C, pois muitos alunos confundem else com finally, achando que o else sempre executa. A pegadinha é lembrar que else é condicional ao sucesso do try; já o finally é incondicional.
Fonte: FGV MP-SC 2022 Analista de Dados e Pesquisas (Caderno Tipo 1). Reproduzida para fins de estudo.