Questão nº 45
Questão de Tecnologia da Informação · FGV MPGO Servidores 2022 (nº 45)
Considere o código Python a seguir.
def X(n):
if (type(N) != int):
return -1
elif (N < 1):
return 0
elif (N == 1):
return 1
else:
return N * X(N-1)
print (X(4))
print (X(0))
print (X(1))
print (X(1.5))
print (X("A"))
Assinale o que acontece quando esse script é executada na IDLE Shell 3.9.9.
- AErro de compilação, "name 'n ' is not defined".
- BErro de compilação, "name 'N' is not defined". (alternativa correta)
- CExecuta e produz resultados corretos com quatro linhas.
- DExecuta, mas produz erro de execução na quinta chamada da função X.
- EExecuta, mas calcula erradamente o fatorial de 4.
Resposta comentada
Gabarito Alternativa B
Conceito-chave: Python diferencia letras maiúsculas de minúsculas. O parâmetro da função foi definido como n (minúsculo), mas dentro do corpo da função o código usa N (maiúsculo). Como N nunca foi definido, o interpretador levanta um erro antes mesmo de executar qualquer linha.
- (A) Incorreta: O erro é sobre
Nmaiúsculo, não sobrenminúsculo; além disso, não é erro de compilação, mas de execução (NameError). - (B) Correta: O código tenta usar
N(maiúsculo) em todas as comparações e noreturn N * X(N-1), mas o parâmetro én(minúsculo). Python é case-sensitive, entãoNnão existe, gerandoNameError: name 'N' is not definedna primeira linha executada (if (type(N) != int):). - (C) Incorreta: Não executa nem produz resultados, pois o erro ocorre na primeira chamada (
X(4)), antes de qualquerprint. - (D) Incorreta: O erro ocorre na primeira chamada, não na quinta; a quinta chamada (
X("A")) nem chega a ser avaliada. - (E) Incorreta: Não calcula nada, pois o erro impede qualquer execução da função.
Armadilha da banca (distrator mais tentador): A letra D parece plausível porque o código tem chamadas com tipos inválidos (1.5 e "A"), levando o aluno a pensar que o erro só apareceria nessas chamadas. Mas a pegadinha é que o erro de N maiúsculo ocorre imediatamente na primeira chamada, antes de qualquer lógica de tipo ou recursão.
Fonte: FGV MPGO Servidores 2022 Analista em Informática (Caderno Tipo 1). Reproduzida para fins de estudo.