Questão de Programação — Conceitos básicos de programação — INSTITUTO AOCP 2025
Programação›Conceitos 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.
AApenas I, II e III.
BApenas II, IV e V.
CApenas I, III, IV e V.
DApenas I, II, III e V.
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:
A função dividir(a, b): recebe dois parâmetros e tenta retornar a divisão a / b.
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.
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.
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.".
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.
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) → except → finally → print(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.
1try (tenta divisão)
2except (captura erro)
3finally (sempre roda)
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: try → except (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.