Pular para o conteúdo principal

Questão de Programação — Conceitos básicos de programação — INSTITUTO AOCP 2025

ProgramaçãoConceitos básicos de programação
Código
qg543490
Banca
INSTITUTO AOCP
Órgão
TRE-TO
Ano
2025
Nível
Superior
Cargo
Analista Judiciário - Área de Atividade: Apoio Especializado - Especialidade: Tecnologia da Informação
Considere o seguinte código em Python, analise as assertivas e assinale a alternativa que aponta as corretas.def dividir(a, b):try:return a / bexcept ZeroDivisionError:return “Divisão por zero não é permitida”finally:print(“Operação finalizada.”)resultado = dividir(10, 0)print(resultado)I. A função dividir trata explicitamente a divisão por zero com o bloco except.II. O bloco finally será executado mesmo quando ocorrer uma exceção.III. A mensagem “Divisão por zero não é permitida” será atribuída à variável resultado.IV. O programa exibirá apenas a mensagem de erro tratada, sem exibir o texto do finally.V. Se o segundo argumento fosse diferente de zero, o programa exibiria o resultado da divisão normalmente.
  1. AApenas I, II e III.
  2. BApenas II, IV e V.
  3. CApenas I, III, IV e V.
  4. DApenas I, II, III e V.
  5. EI, II, III, IV e V.
Revelar gabarito e comentário

GabaritoD — Apenas I, II, III e V.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Python: Tratamento de Exceções com try/except/finally

Gabarito: letra D. As assertivas I, II, III e V estão corretas, e a IV está incorreta. O código trata explicitamente a divisão por zero com except ZeroDivisionError, o bloco finally sempre executa, a mensagem de erro é atribuída à variável resultado, e com divisor diferente de zero o resultado seria exibido. A assertiva IV erra ao afirmar que o texto do finally não seria exibido — ele sempre é executado, inclusive quando ocorre exceção.

O código apresentado é um exemplo clássico de tratamento de exceções em Python, um dos pilares da programação defensiva. Vamos entender cada parte:

  1. A função dividir(a, b): recebe dois parâmetros e tenta retornar a divisão a / b.

  2. O bloco try: contém o código que pode gerar uma exceção. Aqui, a divisão por zero (10 / 0) lança uma exceção do tipo ZeroDivisionError.

  3. O bloco except ZeroDivisionError: captura especificamente essa exceção e retorna a string "Divisão por zero não é permitida". Isso impede que o programa seja interrompido com um erro não tratado.

  4. O bloco finally: é executado sempre, independentemente de ocorrer ou não uma exceção. É usado para ações de limpeza, como fechar arquivos ou liberar recursos. No código, ele imprime "Operação finalizada.".

  5. A chamada dividir(10, 0): como o divisor é zero, a exceção é lançada, o except retorna a mensagem de erro, e o finally imprime "Operação finalizada.". O valor retornado pelo except é atribuído à variável resultado.

  6. print(resultado): exibe o valor de resultado, que é a string "Divisão por zero não é permitida".

A ordem de execução é: try → (exceção) → exceptfinallyprint(resultado). Portanto, a saída do programa será:

Operação finalizada.
Divisão por zero não é permitida

A pegadinha da questão está na assertiva IV, que inverte a ordem de exibição e nega a execução do finally. Muitos candidatos confundem a ordem de execução ou acreditam que o finally só roda quando não há exceção, o que é um erro grave.

Guarde a regra de ouro: o bloco finally é incondicional. Ele roda antes de o controle ser devolvido ao chamador, seja qual for o caminho percorrido (sucesso, exceção tratada ou não tratada, return, break, continue). É essa característica que torna a assertiva IV falsa e a II verdadeira.

  1. 1try (tenta divisão)
  2. 2except (captura erro)
  3. 3finally (sempre roda)
  4. 4print(resultado)
LEVEL · soulevel.com.br

Assertiva I — ✅ Correta

A função dividir trata explicitamente a divisão por zero com o bloco except ZeroDivisionError. O except é a cláusula que captura a exceção específica, e o código dentro dele define o que fazer quando ela ocorre. Aqui, ele retorna uma mensagem amigável em vez de deixar o programa quebrar.

Assertiva II — ✅ Correta

O bloco finally é executado sempre, mesmo quando ocorre uma exceção. Essa é a garantia fundamental do finally: ele roda independentemente do que aconteça no try ou no except. No código, "Operação finalizada." será impresso tanto na divisão por zero quanto na divisão normal.

Assertiva III — ✅ Correta

A mensagem "Divisão por zero não é permitida" será atribuída à variável resultado. Quando a exceção ZeroDivisionError é lançada, o except retorna essa string, e o valor de retorno da função é atribuído a resultado na chamada resultado = dividir(10, 0). Portanto, resultado conterá exatamente essa mensagem.

Assertiva IV — ❌ Incorreta

A assertiva afirma que o programa exibirá apenas a mensagem de erro tratada, sem exibir o texto do finally. Isso é falso. O bloco finally é executado sempre, inclusive quando ocorre uma exceção. A saída correta do programa é:

Operação finalizada.
Divisão por zero não é permitida

O finally imprime "Operação finalizada." antes do print(resultado) exibir a mensagem de erro. A banca tenta confundir o candidato ao negar a execução do finally.

Assertiva V — ✅ Correta

Se o segundo argumento fosse diferente de zero, a divisão seria realizada normalmente e o resultado seria retornado e exibido. Por exemplo, dividir(10, 2) retornaria 5.0, e o programa imprimiria "Operação finalizada." (do finally) e depois 5.0. O except só é acionado quando ocorre a exceção ZeroDivisionError.

NÃO CAIA NESSA!

A banca explora a crença equivocada de que o finally não executa quando há exceção. Na verdade, ele é incondicional: roda sempre, antes de o controle sair da função. A assertiva IV inverte essa lógica, e o candidato desatento marca a alternativa B ou E. Lembre-se: finally = sempre.

NÃO CAIA NESSA!

Para questões de exceções, monte mentalmente a ordem de execução: tryexcept (se houver exceção) → finally → código após a chamada. Se houver return no try ou no except, o finally ainda roda antes do retorno efetivo. Essa sequência resolve a maioria das pegadinhas.

Gabarito: letra D — corretas as assertivas I, II, III e V.

Link permanente: /questoes/qg543490